0

我可能有一个简单的问题,但我想问一下如何将文本框 Text 属性绑定到组合框 SelectedItem 属性的可能性。我通过组合框 SelectedItemChanged 事件来完成并设置如下文本:

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

我有类 ListBoxItem,它包含 2 个字符串“名称”和“值”。然后我为组合框创建了 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;
}

如果文本框失去焦点,我会分配项目值。但是我还有一个菜单条来保存输入,当我直接单击它时,不会发生此事件,因此不会保存最后一个输入。我知道这可以通过文本框 TextChanged 事件来完成,但它会消耗大量时间。

您有更好的解决方案还是可以?我没有使用 WPF。

谢谢。

4

2 回答 2

0

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

MyMenuStripItem.Focus();

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

于 2013-11-11T17:38:24.560 回答
0

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

txtMethod.DataBindings.Add("Text", lst, "Value", 
                           false, DataSourceUpdateMode.OnPropertyChanged);
于 2013-11-11T17:57:42.810 回答