2016-10-15 13 views
-1

ユーザー入力に基づいていくつかのコンボボックスを作成しています。私はボックスをうまく作成しますが、その中のテキストをチェックしたい場合、私は苦労しています。C#ダイナミックコントロールへのアクセスWindowsフォーム

私はIListにそれらを格納することを考えていましたが、これまでのところ動作していないようです。目標はボタンのクリックですべてのテキストを変更することですが、いくつかの試みの後で私は不満を感じています。

IList<ComboBox> comboBoxes = new List<ComboBox>(); 


private void AddComboBox(int i) 

    { 
     var comboBoxStudentAttendance = new ComboBox();   
     comboBoxStudentAttendance.Top = TopMarginDistance(i); 

     comboBoxStudentAttendance.Items.Add(""); 
     comboBoxStudentAttendance.Items.Add("Present"); 
     comboBoxStudentAttendance.Items.Add("Absent"); 
     comboBoxStudentAttendance.Items.Add("Late"); 
     comboBoxStudentAttendance.Items.Add("Sick"); 
     comboBoxStudentAttendance.Items.Add("Excused"); 

     comboBoxes.Add(comboBoxStudentAttendance); 
     this.Controls.Add(comboBoxStudentAttendance); 
    } 

私は以下を試みましたが、成功しませんでした。

private void DistributeAttendanceButton_Click(object sender, EventArgs e) 
    { 

     for (int i = 0; i < sampleNum; i++) 
     { 
      switch (MasterComboBox.Text) 
      { 

      case "Present": 


        comboBoxes.ElementAt(i).Text = "Present"; 
        break; 
       } 

      } 
    } 
+1

を試してみてください。リストだけで動作するはずです。私はいつもそれをする。次に、comboBoxes [i] .Text = "Present"を使用します。 – jdweng

+0

私はそれらの変更を試してみましたが、私はそれらを間違って実装しているかどうかは不明です。 – ghh1415

答えて

0

あなたがIListのが必要なのはなぜこの

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     const int TOP_MARGIN = 10; 
     const int LEFT_MARGIN = 10; 
     const int WIDTH = 200; 
     const int HEIGHT = 10; 
     const int SPACE = 15; 
     const int NUMBER_OF_BOXES = 10; 
     public Form1() 
     { 
      InitializeComponent(); 
      MasterComboBox.Text = "Present"; 
      for (int i = 0; i < NUMBER_OF_BOXES; i++) 
      { 
       AddComboBox(i); 
      } 
     } 

     List<ComboBox> comboBoxes = new List<ComboBox>(); 


     private void AddComboBox(int i) 
     { 
      var comboBoxStudentAttendance = new ComboBox(); 
      comboBoxStudentAttendance.Top = TOP_MARGIN + i * (SPACE + HEIGHT); 
      comboBoxStudentAttendance.Left = LEFT_MARGIN; 
      comboBoxStudentAttendance.Width = WIDTH; 
      comboBoxStudentAttendance.Height = HEIGHT; 

      comboBoxStudentAttendance.Items.Add(""); 
      comboBoxStudentAttendance.Items.Add("Present"); 
      comboBoxStudentAttendance.Items.Add("Absent"); 
      comboBoxStudentAttendance.Items.Add("Late"); 
      comboBoxStudentAttendance.Items.Add("Sick"); 
      comboBoxStudentAttendance.Items.Add("Excused"); 

      comboBoxes.Add(comboBoxStudentAttendance); 
      this.Controls.Add(comboBoxStudentAttendance); 

     } 

     private void DistributeAttendanceButton_Click(object sender, EventArgs e) 
     { 

      for (int i = 0; i < comboBoxes.Count; i++) 
      { 
       switch (MasterComboBox.Text) 
       { 

        case "Present": 


         comboBoxes[i].Text = "Present"; 
         break; 
       } 

      } 
     } 
    } 
} 
+0

これは機能し、プロジェクトに実装するだけで何が違うのですか? – ghh1415

+0

あなたのお手伝いをしてくれてありがとう! – ghh1415

+0

私には分かりません。私が変更したのは、ループとコンボボックスの2つでした。[i] – jdweng

関連する問題