在所有这些选项卡中,我都有一个作为字符串具有不同功能的组合框。我想要预览下的文本(它是一个富文本框,上面写着“没有被选中”)。(作为默认字符串),每当我在每个不同选项卡的组合框中选择一个项时,都会更改。知道我怎么能做到吗?
发布于 2014-02-06 12:56:46
可以将所有组合框的每个TextChanged事件设置为同一个事件处理程序。
comboBox1.TextChanged += CommonComboTextChanged;
comboBox2.TextChanged += CommonComboTextChanged;
comboBox3.TextChanged += CommonComboTextChanged;
comboBox4.TextChanged += CommonComboTextChanged;
private void CommonComboTextChanged(object sender, EventArgs e)
{
ComboBox cbo = sender as ComboBox;
richTextBox.Text = cbo.Text;
}
但是,如果将组合体的DropDownStyle更改为ComboBoxStyle.DropDownList,则可以使用SelectedIndexChanged事件,只有当用户使用DropDown列表更改所选项时才会触发该事件。
comboBox1.SelectedIndexChanged += CommonComboIndexChanged;
comboBox2.SelectedIndexChanged += CommonComboIndexChanged;;
comboBox3.SelectedIndexChanged += CommonComboIndexChanged;;
comboBox4.SelectedIndexChanged += CommonComboIndexChanged;;
private void CommonComboIndexChanged;(object sender, EventArgs e)
{
ComboBox cbo = sender as ComboBox;
richTextBox.Text = cbo.Text;
}
最后,要将RTB的内容设置为当前选项卡页中的组合体之一,需要处理TabChanged事件的tabControl。
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
switch(e.TabPageIndex)
{
case 0:
richTextBox.Text = comboBox1.Text;
break;
// so on for the other page and combos
}
}
或者,如果您的组合框共享其名称的一个共同的初始部分
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
var result = e.TabPage.Controls.OfType<ComboBox>()
.Where(x => x.Name.StartsWith("cboFunction"));
if(result != null)
{
ComboBox b = result.ToList().First();
richTextBox.Text = comboBox1.Text;
}
}
https://stackoverflow.com/questions/21603482
复制相似问题