Это в WinForms с использованием C#. Имейте форму с 10 радиокнопками viz..car, велосипед, поезд, автобус и т. Д. И ярлык с текстом «XYZ» .Все в том же групповом поле. Я написал следующий общий метод, чтобы скрыть текст при проверке переключателя.Обработчик событий в C# работает только с новыми элементами управления
private void Hide_radio(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
if (rb != null)
label1.Text="";
}
Как ни странно, назвав это событие, как показано ниже способом (только при инициализации компонента), работает только на нескольких радиостанциях, а не все. Когда я перетаскиваю новое радио, оно работает на нем. [Строго перетащите n капли. Новый код не добавлен или удален.]
foreach (Control gb1c in groupBox1.Controls)
{
if (gb1c is RadioButton)
{
RadioButton rb = gb1c as RadioButton;
rb.CheckedChanged += new MouseEventHandler(Hide_radio);
break;
}
}
Я проверил designer.cs и код для всех радиостанций одинаковый. Так что в основном обработка событий работает только с несколькими и новыми радиостанциями, но не со всеми. Почему C# действует так ребяч ...
«Почему C# действует так ребячливо» - это только то, что вы говорите ему. –
вам не нужен оператор break, что вам нужно, это создать метод, который проверяет, что вам нужно. Кроме того, вместо того, чтобы кастинг сначала, я лично проверил бы, будет ли элемент управления определенного типа также в методе, который вам нужно будет сделать рекурсивный вызов ..'Почему C# действует так по-детски 'это не тот язык, который является его «вероятно,« user/coder » – MethodMan