B. *_*non 1 c# combobox dynamic event-handling winforms
我用这种方式"只读"组合框:
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
// for this to work, set the comboboxes' Tag to its SelectedIndex after setting that
ComboBox cb = sender as ComboBox;
int validSelection = Convert.ToInt32(cb.Tag);
if (cb.SelectedIndex != validSelection )
{
cb.SelectedIndex = validSelection;
}
}
Run Code Online (Sandbox Code Playgroud)
...然后尝试将表单上的所有组合框设置为该处理程序,如下所示:
foreach (Control c in this.Controls)
{
if (c is ComboBox)
{
(c as ComboBox).SelectedValueChanged += comboBox1_SelectedValueChanged;
}
}
Run Code Online (Sandbox Code Playgroud)
......但if条件永远不等于真; 表格上有几个ComboBox ... ???
ComboBox最有可能出现在其他面板中.
尝试递归地浏览它们:
private void button1_Click(object sender, EventArgs e) {
ChangeCombos(this);
}
private void ChangeCombos(Control parent) {
foreach (Control c in parent.Controls) {
if (c.Controls.Count > 0) {
ChangeCombos(c);
} else if (c is ComboBox) {
(c as ComboBox).SelectedValueChanged += comboBox1_SelectedValueChanged;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |