に役立ちます願っています。 ComboboxItem
クラスはDictionary
のように疑わしく見えるので、このクラスをComboboxItem
クラスで再作成する必要はないようです。
もう一つの問題は...
あなたのコメントである私はプログラム的にキーに基づいて項目を選択する必要がありますが、私はここでの提案を使用することはできません:キー、値のペアに基づいて コンボボックスのSelectedItemのを設定します。私はComboBoxが実行時に読み込まれるように、データ項目の先読みがありません。
これが当てはまる場合、どのように選択すればよいのでしょうか?
Dictionary
,ComboBox
,Textbox
およびButton
のコードを使用しています。 Dictionary
にデータが入力され、ComboBox
のDataSourceに設定されます。テキストのみがComboBox
に表示されます。フォームのTextBox
は、ユーザがButton
がクリックされたときにComboBox
の選択した値を変更する値を入力できるようにするために使用されます。そのキーがDictionary
に存在しない場合は、インデックスが見つからなかったことを示すメッセージが表示されます。
あなたはあなたが探しているものを正確に知らないと言うので、私はあなたがどのように適切なインデックスを選ぶと思うか不思議です。これが意味を持つことを願っています。
Dictionary<int, string> comboBoxData = new Dictionary<int, string>();
public Form1() {
InitializeComponent();
comboBoxData = GetDataDictionary();
comboBox1.DataSource = new BindingSource(comboBoxData, null);
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";
}
private void SetSelectedIndex(int indexToSelect) {
if (comboBoxData.Keys.Contains(indexToSelect)) {
comboBox1.SelectedIndex = indexToSelect;
}
else {
MessageBox.Show("The supplied key does not exist!");
}
}
private Dictionary<int, string> GetDataDictionary() {
Dictionary<int, string> dictionary = new Dictionary<int, string>();
for (int i = 0; i < 15; i++) {
dictionary.Add(i, "Item name " + i);
}
return dictionary;
}
private void buttonSelectIndex_Click(object sender, EventArgs e) {
if (tbIndexToSelect.Text != "") {
int indexToSelect = comboBox1.SelectedIndex;
if (int.TryParse(tbIndexToSelect.Text, out indexToSelect)) {
SetSelectedIndex(indexToSelect);
}
}
}
私はなぜあなたがそのクラスを全く使用しているのか尋ねる必要があります。文字列を使用するよりもメリットがあるようではなく、(現在の問題のような)いくつかのことがはるかに複雑になります。 – Abion47
これはどのような用途ですか?私はwinforms wpfまたはwebを意味しますか? –
まあまあ、私はまだまだC#の方が新しく、実装方法はわかりません。 3文字のコードとテキストの説明としてキーを持つ項目を追加するより良い方法を提案してください。ユーザーが特定のXMLファイルをアップロードすると、XMLデータから3文字のコードが抽出され、コンボボックス内の各項目を事前に選択する必要があります。どうもありがとう。 – user2430797