如何将图片框展开为另一种形式

本文关键字:另一种 | 更新日期: 2023-09-27 18:35:46

目前,我的应用程序显示 6 个图片框,每个图片框显示一张不断更新的图片。

现在,我想在单击任何图片框时,该图片框扩展并填满整个屏幕,仅显示所选的图片框。

这可能吗?我必须创建另一个表单来执行此操作吗?

提前致谢,佩鲁马尔

如何将图片框展开为另一种形式

在每个

图片框的 onclick 事件中(它们都可以指向相同的方法)

picturebox_Click(object sender .....)
{
    PictureBox pb= (PictureBox)sender;
    if (pb.dock==DockStyle.None)
        {
            pb.dock=DockStyle.Fill;
            pb.BringToFront();
        } 
    else
        pb.dock=DockStyle.None;
}

没有看到任何代码,下面介绍了如何在单击时以编程方式更改图片框。

pictureBox1.Dock = DockStyle.Fill

因此,您需要创建一个单击事件处理程序,并像上面一样调用图片框的 Dock 函数。

更新以响应评论

有一个DockStyle.None可以将图片恢复为原始大小。

如果我理解正确,您想要有 6 张图片,然后当您单击一张图片时,它会填充、再次单击、缩小、单击另一张、填充等......

为此,您将使用图片框上的"停靠"和"可见"属性。现在,您似乎也在询问如何实际编写代码。好吧,如果你展示一些代码,我可以给出一些指示,没有什么可以继续我的方式

  1. 将所有图片框放在一个列表中,并BigSmall为它们分配状态。

  2. 为每个图片框编写 OnClick 以更改所单击图片框的状态。

  3. 然后,每个 OnClick 都会调用一个帮助程序函数,该函数循环访问列表中的每个图片框并隐藏小图片框和 DockStyle.Fill 大图片框。

上述算法是否满足了您的需求?

尝试这样的事情。 代码没有被重构,但我相信你可以这样做

private bool isfill = false;
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            if (!isfill)
            {
                pictureBox1.Dock = DockStyle.Fill;
                pictureBox2.Visible = false;
                isfill = true;
            }
            else
            {
                pictureBox1.Dock = DockStyle.None;
                pictureBox2.Visible = true;
                isfill = false;
            }
        }
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            if (!isfill)
            {
                pictureBox2.Dock = DockStyle.Fill;
                isfill = true;
                pictureBox1.Visible = false;
            }
            else
            {
                pictureBox2.Dock = DockStyle.None;
                isfill = false;
                pictureBox1.Visible = true;
            }