我可能有一个简单的问题,但我想问一下如何将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。
感谢。
答案 0 :(得分:0)
如果您有MenuStrip
项的Click事件,则可以执行以下操作
MyMenuStripItem.Focus();
这会导致MenuStrip
项目获得焦点,从而导致TextBox
失去焦点。
答案 1 :(得分:0)
尝试在表单构造函数中的TextBox上进行数据绑定:
txtMethod.DataBindings.Add("Text", lst, "Value",
false, DataSourceUpdateMode.OnPropertyChanged);