2012-05-25 87 views
0

我想檢測ComboBox selectedindex更改。 組合框位於不同的類,然後Form類:檢測其他類ComboBox更改形式

class Analyze 
    { 
     public Analyze(Form theform) 
     { 
      size = new ComboBox(); 
      size.Location = new Point(100,100); 
      size.Name = "matrixsize"; 
      size.Size= new Size(200,100); 
      size.Items.AddRange(matrix_sizes); 
      theform.Controls.Add(size); 
     } 
     private string[] matrix_sizes = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" }; 
     private ComboBox size; 
    } 

和IM創建類型的新對象就在這裏分析:

private void Analyze_Click(object sender, EventArgs e) 
{ 
    Analyze analyze = new Analyze(this); 
} 

,現在我要檢測值的變化在Analyze.size中,我該怎麼做?訪問大小組合框的正確方法是什麼?

在此先感謝。

+0

事件添加到分析類。 –

+0

您將組合框添加到表單中,因此它不是「位於不同的類」中,而是附加到表單中。您可以通過'form.Controls [「matrixsize」]'的形式訪問它,因爲您已將「matrixsize」分配給Name屬性。 – Tergiver

回答

1

只需添加自己的處理程序:

class Analyze { 
    public event EventHandler SelectedIndexChanged; 

    public Analyze(Form theform) { 

    ... 
    size.SelectedIndexChanged += size_SelectedIndexChanged; 
    theform.Controls.Add(size); 
    } 

    void size_SelectedIndexChanged(object sender, EventArgs e) { 
    if (SelectedIndexChanged != null) { 
     SelectedIndexChanged(sender, e); 
    } 
    } 
} 

然後踩滅了你的事件調用形式:

private void Analyze_Click(object sender, EventArgs e) 
    Analyze analyze = new Analyze(this); 
    analyze.SelectedIndexChanged += analyze_SelectedIndexChanged; 
} 

void analyze_SelectedIndexChanged(object sender, EventArgs e) { 
    // do something 
} 
+0

工作像一個魅力,謝謝 –

相關問題