1

まず、私は自分の問題について検索していましたが、\help が見つかりません。私の質問は、3 つのボタンと 3 つのボタンがありuserControl、1 つのボタンをクリックすると usercontrol 1 が表示されますが、ボタン 2 をクリックすると usercontrol 1 に戻ることができません。 . これが私のコードです:

public partial class Form2 : Form
{
    UserControl1 u1;
    UserControl2 u2;
    UserControl3 u3;
    public Form2()
    {

        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        u1 = new UserControl1();
        u1.Dock = DockStyle.Fill;
        this.Controls.Add(u1);

    }

    private void button2_Click(object sender, EventArgs e)
    {
        u1.Hide();

        u2 = new UserControl2();
        u2.Dock = DockStyle.Fill;
        this.Controls.Add(u2);
    }

    private void button3_Click(object sender, EventArgs e)
    {
        u1.Hide();
        u2.Hide();
        u3 = new UserControl3();
        u3.Dock = DockStyle.Fill;
        this.Controls.Add(u3);
    }

    private void button4_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }
}

必要とする他の人のための解決済みコード:) --->

enter code here
public partial class Form2 : Form
{
    UserControl1 u1;
    UserControl2 u2;
    UserControl3 u3;
    public Form2()
    {
        u1 = new UserControl1();
        u2 = new UserControl2();
        u3 = new UserControl3();
                    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
            {
                u2.Hide();
                u3.Hide();
                u1.Show();
                u1.Dock = DockStyle.Fill;
              this.Controls.Add(u1);
          }
    private void button2_Click(object sender, EventArgs e)
    {
        u1.Hide();
        u3.Hide();
        u2.Show();
        u2.Dock = DockStyle.Fill;
        this.Controls.Add(u2);
    }
    private void button3_Click(object sender, EventArgs e)
    {
        u1.Hide();
        u2.Hide();
        u3.Show();
        u3.Dock = DockStyle.Fill;
        this.Controls.Add(u3);
    }

    private void button4_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }
}
4

3 に答える 3

3

あなたが持っているべきだと思われます:

u1=new UserControl1();
u2=new UserControl2();
u3=new UserControl3();

public Form2()イベントハンドラーではなくコンストラクターで。これにより、追加できるようになります

u2.Hide();
u3.Hide();

あなたのbutton1_Clickハンドラで。

おそらく にも追加する必要がありu3.Hide()ますbutton2_Click

于 2012-08-25T14:11:10.833 に答える
1

これを見てください。これ以上の説明は必要ないほど明確だと思います。

public partial class Form1 : Form
{
    private UserControl1 uc1 = new UserControl1();
    private UserControl2 uc2 = new UserControl2();
    private UserControl3 uc3 = new UserControl3();

    public Form1()
    {
        InitializeComponent();
        AssignedButtonClickEvents();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    protected void ButtonClicked(object sender, EventArgs e)
    {
        Button button = sender as Button;
        panel1.Controls.Clear();

        if (button != null)
        {
            switch (button.Name)
            {
                case "button1":
                    uc1.Dock = DockStyle.Fill;
                    panel1.Controls.Add(uc1);
                    break;

                case "button2":
                    uc2.Dock = DockStyle.Fill;
                    panel1.Controls.Add(uc2);
                    break;

                case "button3":
                    uc3.Dock = DockStyle.Fill;
                    panel1.Controls.Add(uc3);
                    break;

                default:
                    panel1.Controls.Clear();
                    break;
            }
        }

    }

    public void AssignedButtonClickEvents()
    {
        foreach (Control ctl in this.Controls)
        {
            if (ctl is Button)
            {
                Button button = (Button)ctl;
                button.Click += new EventHandler(ButtonClicked);
            }
        }
    }

ユーザー
コントロールを保存するパネルを作成することに注意してください。ただし、Windowsフォームにユーザーコントロールを直接表示する場合も同じだと思います。コントロールを非表示にするだけです。

于 2012-08-25T15:12:17.870 に答える