2016-07-15 12 views
0

私はアプリケーションフォームに多数のボタンがあります。そして、私はすべてのボタンテキスト(比較)をチェックしたいと思います。どのように私はそれを達成することができますか?C#forループの変数

for (i = 1; i < 30; i++) 
{ 
    if (this.button1.Text == "Hello") //here is PROBLEM 
    { 
     //..some statement 
    } 
} 

ので、次回の.textはそうで .textセクションとをthis.buttonするために変更する必要がありますthis.button ...

this.button

[I]の.text機能していません。

+1

は、このWindowsフォーム、WPF、Windowsのアプリですか...? – Konamiman

+0

可能重複:http://stackoverflow.com/questions/3419159/how-to-get-all-child-controls-of-a-windows-forms-form-of-a-specific-type-button –

答えて

2

これは正しい構文です:

foreach (Control button in this.Controls) 
{ 
    if (button.GetType() == typeof(Button) && button.Text == "Hello") 
    { 
      //..some statement  
    } 
} 
+0

このコードの構文は、パズルを解決するのに役立ちました。ありがとう。 –

+0

静止画を追加すると、実際にどのように動作するかがわかります。 –

+0

私のものと同じですが、私のコードは面倒です:3 – Sherlock

4

ボタンは配列ではありません。それぞれは控えめなオブジェクトで、そのコンテナの子です。

理想的には、インデックス変数(i)を使用するのではなく、ボタンのコレクション(配列、リストなど)を作成し、そのコレクションを反復処理する必要があります。 https://stackoverflow.com/a/3426721/820068

+0

Windowsフォームで繰り返すと、これはアプリケーションフォームであることが質問に記載されています – Sherlock

+0

@Desperado - 私はそれが偽であると主張しませんでした。あなたは、Panel.Controlsコレクションを取得し、それを反復することによって、私のアプローチを正確に使用しました。 –

+0

申し訳ありません私はあなたのリンクをクリックしていませんでした。私たちは同じコンセプトを持ち、私の古いコードから回答をコピーしました。 – Sherlock

1

私は、これがWindowsフォームであることをかなり確信している:

は、ここでは良いアプローチです。 Windowsのフォームでは、このようなコントロールを反復することができます。

foreach (Control c in panel.Controls) 
{ 
    string cType = c.GetType().ToString(); 

    // check all buttons 
    if (cType == "System.Web.UI.WebControls.Button") 
    { 
     if(((Button)c).Text == "Hello") 
     { 

     } 
    } 
} 

このコードは、パネル内のすべてのコントロールを反復し、各コントロールがボタンであるかどうかをチェックします。

更新:ウェズリーが言ったように は、条件のためのより良いアプローチは、このコードを試してみてください。この

if (c is Button && c.Text.Equals("Hello")) { 
+2

推奨:if(cはButton &&((Button)c).Text.Equals( "Hello ")){{}} –

+0

_これはウィンドウであることを確信していますform_は' System.Web.UI.WebControls'と一致しません – fubo

+0

申し訳ありません@fubo – Sherlock

0
for (int i = 1; i < 3; i++) 
     { 
      var buttonName = "button" + i; 
      Button button = this.Controls.Find(buttonName, true).FirstOrDefault() as Button; 
      string text = button.Text; 
     } 

ようにそれを実装することです。

+0

これは特定のシナリオでは機能するかもしれませんが、すべてのボタンの名前をbuttonXとすることを前提としていないのでお勧めできません。 – M22an

+0

私はそれを知っています。しかし、キャスパーはこの種の行動をしたいと思っています。彼は固定名でコントロールを探したい。 Exp:http://stackoverflow.com/questions/3898588/find-control-by-name-from-windows-forms-controls – manoj

関連する問題