C#在文本框中显示属性,具体取决于组合选择项

时间:2013-11-11 17:34:03

标签: c# combobox textbox

我可能有一个简单的问题,但我想问一下如何将textbox Text属性绑定到combobox SelectedItem属性的可能性。我是通过combobox SelectedItemChanged事件做的,并设置如下文本:

if(cmbMeasuring.SelectedItem != null)
    txtMethod.Text = ((ListBoxItem)cmbMeasuring.SelectedItem).Value;

我有类ListBoxItem,它包含2个字符串“Name”和“Value”。然后我为combobox创建了BindingList:

private BindingList<ListBoxItem> lst;

然后在构造函数中设置组合框数据源:

cmbMeasuring.DataSource = lst;
    cmbMeasuring.DisplayMember = "Name";

这很好但我不知道它是否是最好的方法。但是当我更改文本框内容时会出现问题。我通过文本框离开事件:

private void txtMethod_Leave(object sender, EventArgs e)
{
    if (cmbMeasuring.SelectedItem != null)
        ((ListBoxItem)cmbMeasuring.SelectedItem).Value = txtMethod.Text;
}

如果文本框失去焦点,我会指定项目值。但我还有一个menustrip来保存输入,当我直接点击它时,这个事件不会发生,所以不保存最后一个输入。我知道这可以通过文本框TextChanged事件来完成,但它会耗费大量时间。

你有更好的解决方案还是没问题?我没有使用WPF。

感谢。

2 个答案:

答案 0 :(得分:0)

如果您有MenuStrip项的Click事件,则可以执行以下操作

MyMenuStripItem.Focus();

这会导致MenuStrip项目获得焦点,从而导致TextBox失去焦点。

答案 1 :(得分:0)

尝试在表单构造函数中的TextBox上进行数据绑定:

txtMethod.DataBindings.Add("Text", lst, "Value", 
                           false, DataSourceUpdateMode.OnPropertyChanged);