6

C# Forms アプリケーションをコーディングしていますが、パネル内のすべてのコントロール コンテナーを有効/無効にする方法を知りたいです。

これが私のコードです:

private void EnabledPanelContents(Panel panel, bool enabled)
{
    foreach (var item in panel.Controls)
    {
        item.enabled = enabled;
    }
}

panel.Controls コレクションに有効なプロパティはありません。

パネル内のすべてのコントロール コンテナを有効/無効にするにはどうすればよいですか。

前もって感謝します。

4

6 に答える 6

15

コントロールを as として取得しvar、それらを繰り返し処理していますが、 var には が含まれていませんproperty Enabled。コントロールをループして、すべてのコントロールを として取得する必要がありますControl。これを試して

private void EnabledPanelContents(Panel panel, bool enabled)
{
    foreach (Control ctrl in panel.Controls)
    {
        ctrl.Enabled = enabled;
    }            
} 

Enabled はtrueまたはfalseです。

于 2015-04-13T08:58:17.620 に答える
3

「パネル内のすべてのコントロール コンテナを有効/無効にするにはどうすればよいですか。」

A: パネル内のすべてのコントロールを無効または有効にしたい場合は、直接呼び出すことができます。

Panel panel; 
-> panel.Enabled = true;//For enabling all controls inside the panel.
-> panel.Enabled = false;//For disabling all controls inside the panel.

パネル内の特定のコントロールのみを有効または無効にする場合は、コントロールのコレクションを繰り返し処理し、要件に基づいて有効状態を true または false に設定できます。

于 2017-05-03T10:29:26.183 に答える
1

item を (foreach ループで) var として宣言すると、windows コントロールのプロパティはありません。コントロールとして宣言する必要があります。

次のコード スニペットを試してみてください。動作するはずです。

foreach (Control item in panel.Controls)
{
     item.Enabled = true;      // = true: enable all, = false: disable all
}
于 2015-04-13T09:05:18.810 に答える
1

次のコードを試してください。

    private void DisableAll_Click(object sender, EventArgs e)
    {
        EnabledPanelContents(this.panel1, false);
    }

    private void EnabledPanelContents(Panel panel, bool enabled)
    {
        foreach (Control item in panel.Controls)
        {
            item.Enabled= enabled;
        }
    }
于 2015-04-13T09:14:13.077 に答える
-1
private void Form1_Load(object sender, EventArgs e)
{ 
    foreach (Control item in panel.Controls)
        if (ctrl is Button)
            ((Button)item).Enabled = false;
}
于 2018-06-02T11:46:20.377 に答える