Как узнать проиндексированный индекс переключателя, чтобы узнать, какой параметр индекса выделен пользователем.
В настоящее время мой код отображает прочитанные элементы. Но когда я выбираю элементы, которые отображаются, он показывает в текстовом блоке выбранный элемент радиообъекта (из данных 3 вариантов, потому что у моего радиообмена в настоящее время есть 3 объекта).
Моя попытка:
foreach (String item in param.Parameter[lop].Component.Attributes.Items)
{
RadioButton radio = new RadioButton()
{
Content = item,
GroupName = "MyRadioButtonGroup"
};
radio.Checked += (o, e) =>
{
txtblkShowStatus.Text = item;
};
data= param.Parameter[lop].Label;
sp.Children.Add(radio);
}
Теперь я хочу что-то вроде insted из "элемента", основанного на выборе теперь я хочу индексирование на основе seelction. Мне нужно что-то вроде этого. Если пользователь выбирает вторую кнопку (радиомаяка), тогда я буду отображать некоторый элемент пользовательского интерфейса. И элементы получаются при десериализации xml. Которая относится только к указателю переключателей. Так что я хочу что-то вроде if(selectedIndexofRadioButton ==IndexObtainedFromXmlInIntegr){do something}
Можно ли это сделать? Если да, то как мне изменить свой код, чтобы достичь этого? EDIT: Изменение моего кода после редактирования ответа DonBoitnott:
foreach (String item in param.Parameter[lop].Component.Attributes.Items)
{
RadioButton radio = new RadioButton()
{
Content = item,
GroupName = "MyRadioButtonGroup",
Tag=tg
};
radio.Checked += (o, e) =>
{
txtblkShowStatus.Text = item;
if (((Int32)((RadioButton)o).Tag).Equals(2))
{
MessageBox.Show("hurrey");
}
};
radio.Tag=1;
data= param.Parameter[lop].Label;
sp.Children.Add(radio);
index++; tg++;
}
Вы должны использовать свойство Tag
объекта управления RadioButton
:
foreach (String item in param.Parameter[lop].Component.Attributes.Items)
{
RadioButton radio = new RadioButton()
{
Content = item,
GroupName = "MyRadioButtonGroup",
Tag = //integer value from XML
};
radio.Checked += (o, e) =>
{
txtblkShowStatus.Text = item;
};
data = param.Parameter[lop].Label;
sp.Children.Add(radio);
}
Свойством Tag
является Object
, поэтому вы можете назначить ему что-либо. Вам просто нужно бросить его на выход, когда вы его используете:
if (((Int32)radioButton.Tag).Equals(IndexObtainedFromXmlInInteger)
{
//do something
}
В ответ на ваш комментарий OP:
radio.Checked += (o, e) =>
{
txtblkShowStatus.Text = item;
if (((Int32)((RadioButton)o).Tag).Equals(2))
{
MessageBox.Show("hurrey");
}
};
Вы ошибочно пытаетесь использовать radio
, о чем сказано выше. Вместо этого используйте то, что фактически получает анонимный метод, o
или Sender
.
Создайте событие, когда индекс изменяется в группе переключателей. После этого создайте отдельную функцию для десериализации файла XML. Передайте заданное целое число, полученное из вашего XML файла, в событие с измененным индексом, а затем соответствующим образом отобразите элемент пользовательского интерфейса. Не забудьте сравнить целое число на свойстве.selectedIndex вашего переключателя.