前提・実現したいこと
初心者です。
1列目で項目を選択し、2列目でどのComboBoxの項目を使用するか選択し、3列目で2列目で選択したcomboBoxの項目の値を表示をさせたいです。
発生している問題・エラーメッセージ
・1回値を表示させた状態ですでに2列目で選択されているcomboBoxの項目を変更した場合、3列目の値に反映されない。
・1回値を表示させた状態で2列目のcomboBoxで1列目の他のcomboBoxを選択しなおすと3列目の値に反映されない。
・1列目のcomboBoxで2つ以上項目を設定していると後ろのcomboBoxの値になる。(例えばコンボ2とコンボ3でそれぞれ別の項目を設定して、2列目のcomboBoxでコンボ2を選択していてもコンボ3の値を表示)
該当のソースコード
C#
1public partial class Form1 : Form 2 { 3 private const String s1 = "コンボ1"; 4 private const String s2 = "コンボ2"; 5 private const String s3 = "コンボ3"; 6 private const String s4 = "コンボ4"; 7 8 private const String kou1 = "項目1"; 9 private const String kou2 = "項目2"; 10 private const String kou3 = "項目3"; 11 12 public Form1() 13 { 14 InitializeComponent(); 15 } 16 private void MainForm_Shown(object sender, EventArgs e) 17 { 18 try 19 { 20 String[] strsSelect = new String[] { s1, s2, s3, s4 }; 21 comboBox1.Items.AddRange(strsSelect); 22 23 String[] strsSource = new String[] { kou1, kou2, kou3 }; 24 comboBox2.Items.AddRange(strsSource); 25 comboBox3.Items.AddRange(strsSource); 26 comboBox4.Items.AddRange(strsSource); 27 comboBox5.Items.AddRange(strsSource); 28 } 29 catch (Exception ex) 30 { 31 MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace); 32 } 33 } 34 35 private void button1_Click(object sender, EventArgs e) 36 { 37 38 } 39 40 private void select_cbx(object sender, EventArgs e) 41 { 42 if (comboBox1.SelectedIndex >= 0) 43 { 44 chk_value(); 45 } 46 } 47 48 private void chk_value() 49 { 50 String[] strtext = new String[] { comboBox2.Text, comboBox3.Text, comboBox4.Text, comboBox5.Text }; 51 52 string[] c6kou1 = new string[] { "項目1の値", "1", "2", "3", "4" }; 53 string[] c6kou2 = new string[] { "項目2の値", "5", "6", "7", "8" }; 54 string[] c6kou3 = new string[] { "項目3の値", "9", "10", "11", "12" }; 55 56 for (int i = 0; i < strtext.Length; i++) 57 { 58 switch (strtext[i]) 59 { 60 case kou1: 61 comboBox6.Items.Clear(); 62 comboBox6.Items.AddRange(c6kou1); 63 comboBox6.Text = c6kou1[0]; 64 break; 65 case kou2: 66 comboBox6.Items.Clear(); 67 comboBox6.Items.AddRange(c6kou2); 68 comboBox6.Text = c6kou2[0]; 69 break; 70 case kou3: 71 comboBox6.Items.Clear(); 72 comboBox6.Items.AddRange(c6kou3); 73 comboBox6.Text = c6kou3[0]; 74 break; 75 default: 76 break; 77 } 78 } 79 } 80 }
補足情報(FW/ツールのバージョンなど)
2列目のcomboBoxのTextChangedイベントに上記select_cbxを入れてます。
よろしくお願いします。
ご自身のプログラムがどういう動作を行っているかデバッガで確認しましたか?
回答1件
あなたの回答
tips
プレビュー