0

forループのボタンにアクセスする必要がありますが、名前を変更する必要があります。

元:

  • 名前がbt1、bt2、bt3、...bt25であるボタンがいくつかあります。
  • これらのボタンを無効または有効にするために、特定の目的でコードでforループを使用しています。
  • これを行うためにforループを使用できますか?

好き:

for(int i =1;i<25;i++)
{
    "bt"+"i".Enable = True;
}

コントロールとしてストリングを作成するにはどうすればよいですか?

4

4 に答える 4

8
for(int i =1;i<25;i++)
{
    this.Controls["bt"+ i.ToString()].Enable = True;
}

VB(コードコンバーターを使用):

For i As Integer = 1 To 24
    Me.Controls("bt" & i.ToString()).Enable = [True]
Next
于 2012-10-19T07:36:26.783 に答える
1

LINQを使用して1行で実行できます

Controls.OfType<Button>().ToList().ForEach(b => b.Enabled = false);

VB(これもコンバーター経​​由)

Controls.OfType(Of Button)().ToList().ForEach(Function(b) InlineAssignHelper(b.Enabled, False))
于 2012-10-19T07:58:01.643 に答える
0

次のコードを使用できます:

foreach (Control ctrl in this.Controls)
            {
                if (ctrl is Button)
                {
                    ctrl.Enabled = true;
                }
            }

コンテナコントロール内にある場合は、これを試してください:

foreach (Control Cntrl in this.Pnl.Controls)
            {
                if (Cntrl is Panel)
                {
                    foreach (Control C in Cntrl.Controls)
                        if (C is Button)
                        {
                            C.Enabled = true;
                        }
                }
            }

VBで実装したい場合は、これを試してください:

For Each Cntrl As Control In Me.Pnl.Controls
    If TypeOf Cntrl Is Panel Then
        For Each C As Control In Cntrl.Controls
            If TypeOf C Is Button Then
                C.Enabled = False
            End If
        Next
    End If
Next
于 2012-10-19T07:49:30.773 に答える
0
for(int i =1;i<=25;i++)
{
    this.Controls["bt"+ i].Enable = True;
 //Or
    //yourButtonContainerObject.Controls["bt"+ i].Enable = True;
    // yourButtonContainerObject may be panel1, pane2 or Form, Depends where
   // your buttons are added. 'this' can be used in case of 'Form' only
}

上記のコードは、実際に25個のボタンがあり、bt1、bt2、bt3 ...、bt25という名前の場合にのみ有効です。

       foreach (Control ctrl in yourButtonContainerObject.Controls)
        {
            if (ctrl is Button)
            {
                ctrl.Enabled = false;
            }
        }

特定のコンテナ(フォームやパネルなど)のすべてのボタンを有効にする場合は、上記のコードの方が適しています。

于 2012-10-19T08:01:48.490 に答える