【问题标题】:Dynamically creating a picturebox from another class into a form将另一个类中的图片框动态创建为表单
【发布时间】:2016-01-23 16:39:09
【问题描述】:

我在尝试将图片框创建为另一个类的另一个表单时遇到了麻烦,我希望我已经提供了足够的信息 c:

Catelogue.cs

class Catelogue
{
    public void loadCatelogue()
    {
        mainPageGUI u = new mainPageGUI();

        PictureBox pictureBox1 = new PictureBox();
        pictureBox1.Location = new System.Drawing.Point(0, 0);
        pictureBox1.Name = "pictureBox1";
        pictureBox1.Size = new System.Drawing.Size(500, 500);
        pictureBox1.BackColor = Color.Red;
        u.Controls.Add(pictureBox1);

        MessageBox.Show("HI");
    }
}

mainmenuGUI.cs

private void catelogueButton_Click(object sender, EventArgs e)
{
    Catelogue a = new Catelogue();
    a.loadCatelogue();
}

【问题讨论】:

  • 目前,图片框没有出现在mainmenuGUI表单中

标签: c# winforms


【解决方案1】:

您正在创建 mainPageGUI 表单的新实例,并向该实例添加新图片框。此实例不是调用您的方法的实例,并且从未显示。因此,您的原始实例保持不变,您什么也看不到。 (只是为了演示问题尝试使用 u.Show(); 更改您的 MessageBox 行)

要修复,只需更改调用代码并传递应在其上创建图片框的表单实例

private void catelogueButton_Click(object sender, EventArgs e)
{
    Catelogue a = new Catelogue();

    // pass this instance to the method....
    a.loadCatelogue(this);
}

当然要使用传递的实例

public void loadCatelogue(mainPageGUI u)
{
    PictureBox pictureBox1 = new PictureBox();
    pictureBox1.Location = new System.Drawing.Point(0, 0);
    pictureBox1.Name = "pictureBox1";
    pictureBox1.Size = new System.Drawing.Size(500, 500);
    pictureBox1.BackColor = Color.Red;
    u.Controls.Add(pictureBox1);
}

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 2017-08-03
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 2014-03-30
    相关资源
    最近更新 更多