0

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

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

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

提前致谢,佩马尔

4

3 回答 3

2

在每个图片框的 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;
}
于 2012-05-30T11:50:45.663 回答
2

没有看到任何代码,这是您如何以编程方式在单击时更改图片框。

pictureBox1.Dock = DockStyle.Fill

所以你需要创建一个点击事件处理程序并像上面一样调用你的图片框的 Dock 函数。

更新以回应评论

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

如果我对你的理解正确,你想要 6 张图片,然后当你点击一张图片时,它会填充,再次点击,缩小,点击另一张,填充等等......

为此,您将使用图片框上的 Dock 和 Visible 属性。现在,您似乎也在询问如何实际编写代码。好吧,如果您显示一些代码,我可以提供指点,而我将采取的方法是:

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

  2. 为每个图片框写一个OnClick,改变点击图片框的状态。

  3. 然后每个 OnClick 调用一个辅助函数,该函数遍历列表中的每个图片框并隐藏小的图片框和 DockStyle.Fill 大的图片框。

上面的算法能满足你的需要吗?

于 2012-05-30T06:36:57.083 回答
-1

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

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;
            }
于 2012-05-30T07:06:01.490 回答