【问题标题】:Two PictureBox controls in two different forms两种不同形式的两个 PictureBox 控件
【发布时间】:2018-10-07 20:58:41
【问题描述】:

我有两个不同形式的图片框。

  • Form1:第一个图片框
  • form2:图片框1

我想把firstpicturebox的图片传到picturebox1。

那么,任何人都可以提供帮助并提供解决方案。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您可以使用 Form2 构造函数发送它

    试试这个:

    Form1:

    Form2 form2 = null;
    
    private void button1_Click(object sender, EventArgs e)
        {
            form2 = new Form2(pictureBox1.Image);
            form2.Show();
        }
    

    表格 2:

    public Form2(Image pic1)
        {
            InitializeComponent();
            pictureBox1.Image = pic1;
        }
    

    【讨论】:

    • 这里,我没有使用form1的firstpicturebox。
    • 如何在新的 form2() 中访问 firstpicturebox..?
    • 我强烈建议将对 Form2 的引用保留为 Form1 中的类级别变量!我冒昧地编辑了答案。
    【解决方案2】:

    你真的是在问两个问题:

    1 - 如何将一个 PictureBox 的内容放入另一个 PictureBox?

    2 - 如何从另一个表单访问一个表单的控件等?

    问题1很简单:pictureBox1.Image = pictureBox2.Image;

    问题 2 的答案也不难,但是有很多方法可以做到这一点,选择一种可能取决于您还想用这两种形式做什么。

    基本的方法始终是获取对其他表单的有效引用。

    这是一个通用的方法:

    • 在每个表单中声明其他表单类的全局变量。
    • 让这些引用在正确的时刻指向另一种形式!
    • 将您想要访问的任何控件、属性等设为公开;对于控件,您可以创建一个额外的引用并填写它,或者您可以转到设计器并在那里将其范围从私有更改为公共。

    什么是正确的时刻?假设 form1 是在程序启动时创建的,而 form2 是通过 form1 中的某些操作创建的,您可以在创建并显示它时获得对 form2 的引用:

        form2 = new Form2(this);
        form2.Show();
    

    这可能发生在按钮单击中,甚至可能发生在 form1 的加载事件中。

    请注意,我已经在构造函数中传递了对this 的引用!这是将对 form1 的引用传递给新表单的好方法。因此,form2 中的构造函数应如下所示:

    public Form2(Form1 form1_)
    {
        InitializeComponent();
        form1 = form1_;
    }
    

    最后一步是公开您需要访问的控件。转到 Designer.cs 文件并从

    更改声明
    private System.Windows.Forms.PictureBox pictureBox1;
    

    public System.Windows.Forms.PictureBox pictureBox1;
    

    完成。

    或者...

    如果您有许多表单都需要访问一个 PictureBox,您也可以尝试以下操作:在 programm.cs 文件中声明对它的静态全局引用,如下所示:

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
    
    public static PictureBox thePictureBox;
    

    然后在form1中填写引用

        Program.thePictureBox = pictureBox1;
    

    现在您也可以以所有其他形式引用它:

    myNextPictureBox42.Image = Program.thePictureBox.Image;
    

    【讨论】:

    • 两个图片框的形式不同..我已经公开了。
    • 您能否建议除此之外的任何其他方法,因为在这种情况下我想将许多表单与一个表单链接
    • 好!因此,正如我所解释的,您所需要的只是对另一种形式的至少一个引用。然后你可以写,比如form1:pictureBox.Image = form2.pictureBox.Image。当然,你的名字就是你的名字;我建议一些有意义的东西,而不仅仅是 1,2,3..
    • 你尝试了什么?我提出了几个建议。请在您的问题中附加一些相关代码!它怎么不起作用?编译器错误?运行?您需要在这里提供更多输入!
    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多