#c# #xamarin #xamarin.forms #picker
#c# #xamarin #xamarin.forms #средство выбора
Вопрос:
Я не знаю, как получить данные, которые пользователь выбрал из средства выбора.
в конфликте, какой из них использовать selectedindexchange, чтобы он сообщал мне, когда пользователь меняет свое мнение, или selecteditem, который сообщает мне, какой из них выбрал пользователь.
public MainPage()
{
InitializeComponent();
drainquatity();
}
void drainquatity()
{
drain.Items.Add("1");
drain.Items.Add("2");
drain.Items.Add("3");
drain.Items.Add("4");
drain.Items.Add("5");
drain.Items.Add("6");
drain.Items.Add("7");
drain.Items.Add("8");
drain.Items.Add("9");
drain.Items.Add("10");
return;
}
<Picker x:Name="drain" Title="Drain #" Margin="190,-30,50,0"
"SelectedItem="drainx" />
я хочу иметь возможность знать, что выбрал пользователь, использовать эти данные для прохождения через оператор switch.
drain #: выберите от 1 до 10
пользователь выбирает
switch (drainx)
пример: 1
затем вызовите эту функцию, чтобы отобразить только 1 запись.
пример: 2
вызовите эту функцию для отображения 2 записей
и т.д…
Ответ №1:
все это объясняется в документах по выбору
// get the index/position of the selected item
// -1 means no selection
int ndx = drain.SelectedIndex;
// get the value of the selected item
// null means no selection
string item = (string)drain.SelectedItem;
// set an event handler to fire when an item is selected
<Picker x:Name="drain" Title="Drain #" Margin="190,-30,50,0"
SelectedIndexChanged="ItemSelected" />
protected void ItemSelected(object sender, EventArgs args)
{
}
Комментарии:
1. он выдает исключение system.nullreferenceexception было вызвано. Ссылка на объект не установлена для экземпляра объекта, когда я использовал это: public MainPage() { // var drainxy = drain. Элементы [слив. SelectedIndex]; string item = (строка)drain. SelectedItem; InitializeComponent(); drainquatity(); switch (item) { case «1»: DisplayAlert (item, «switch», «K»); break; по умолчанию: break; }
2. // это срабатывает, когда пользователь изменяет или выбирает новую выборку void ItemSelected(отправитель объекта, система. EventArgs e) { //чтобы получить значение, выбранное пользователем, var drainx = drain. Элементы [слив. SelectedIndex]; DisplayAlert(drainx, «выбранное значение», «OK»); } // это предупреждение работает
3. во-первых, «исключение» не помогает. Какое конкретное исключение и какая строка его вызывает? Во-вторых, если вы делаете это в конструкторе страницы, тогда SelectedItem будет равен null, потому что пользователь еще ничего не сделал. Для этого существует обработчик событий SelectedIndexChanged.
Ответ №2:
<Picker x:Name="drain" Title="Drain #" SelectedIndexChanged="Drain_SelectedIndexChanged"/>
public void Drain_SelectedIndexChanged(object sender, EventArgs e)
{
if (drain.SelectedIndex == -1)
{
//Message
}
else
{
string item = (string)drain.SelectedItem;
DisplayAlert (selectedItem, "OK", "OK");
}
}