0

簡単な質問かもしれませんが、テキストボックスの Text プロパティをコンボボックスの SelectedItem プロパティにバインドする方法についてお尋ねしたいと思います。私はコンボボックスのSelectedItemChangedイベントを介してそれを行い、次のようにテキストを設定します:

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

「名前」と「値」の 2 つの文字列を保持するクラス ListBoxItem があります。次に、コンボボックスの BindingList を作成しました。

private BindingList<ListBoxItem> lst;

次に、コンストラクターでコンボボックスのデータ ソースを設定します。

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

これはうまくいきますが、それが最善の方法であるかどうかはわかりません。しかし、テキストボックスの内容を変更すると問題が発生します。私はテキストボックスのLeaveイベントを介してそれを行います:

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

テキストボックスがフォーカスを失った場合、アイテムの値を割り当てます。しかし、入力を保存するためのメニューストリップもあり、それを直接クリックすると、このイベントは発生しないため、最後の入力は保存されません。これはテキストボックスの TextChanged イベントを介して実行できることはわかっていますが、多くの時間がかかります。

より良い解決策はありますか、それとも問題ありませんか? 私はWPFを使用していません。

ありがとう。

4

2 に答える 2