私はc#
を初めて使用しました。いくつかのフォームアクションに基づいてイベントをトリガする方法を学習しています。C#Winforms:選択したアイテムに基づいてComboBoxにテキストを設定します。
これは、ビューの一部です:
private void comboGoodsName_TextChanged(object sender, EventArgs e)
{
controller.selectName(comboGoodsName.Text);
}
public void nameChanged(object sender, MeasurementEventArgs e)
{
comboGoodsName.TextChanged -= comboGoodsName_TextChanged;
comboGoodsName.Text = e.value;
comboGoodsName.TextChanged += comboGoodsName_TextChanged;
}
そして、これは、コントローラの一部です:
public void selectName(string name)
{
model.Name = name.Split('|')[0].Trim();
if (name.Contains(" | "))
{
string code = name.Split('|')[1].Trim();
model.NameCode = code;
}
}
次のようなシナリオは次のとおりです。
私はそれにいくつかの項目でComboBox
を持ちたいです(ソースが何であるかは関係ありません)。項目は、名前とコードを組み合わせた形式(NAME | CODE
)です。 ComboBox
にテキストを入力すると、comboGoodsName_TextChanged
が呼び出され、モデルのプロパティを設定するselectName
が呼び出され、その結果、nameChanged
というイベントが発生します。これは正常に動作します(NAME
をComboBox
とCODE
〜TextBox
としています)。 ComboBox
ドロップダウンリストから項目を選択すると問題が表示されます。項目を選択すると、がComboBox
に表示されるのではなく、NAME | CODE
と表示されます。
編集:モデルでは、プロパティが正しく設定されていますが、値を印刷して確認しました。したがって、問題は適切な値をComboBox
に表示することと関連しています。
あなたの条件を理解しようとしています。あなたはコンボボックスでCODEを見たいと思っていますか? ComboBoxプロパティを使用しないのであれば、** CODE **の** NAME **と* ValueMember *には* DisplayMember *を使用してください。 –
はい、私はそれを表示したいので、ユーザーは異なる項目を区別することができます。また、ユーザーが項目を選択すると、1つの情報がコンボボックスに送られ、別の情報がテキストボックスに送られます。 – Fejs
何がトリガーされますか?** nameChanged()**? –