【发布时间】:2012-05-30 19:50:45
【问题描述】:
目前,我的应用程序显示 6 个图片框,每个显示一个不断更新的图片。
现在,我希望在单击任何图片框时,图片框会扩展并填满整个屏幕,只显示所选的图片框。
这可能吗?我必须创建另一个表单来执行此操作吗?
提前致谢, 秘鲁人
【问题讨论】:
-
适用于使用 WinForms 的桌面。
目前,我的应用程序显示 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 函数。
响应 cmets 更新
有一个DockStyle.None可以将图片恢复到原始大小。
如果我理解正确,您想要 6 张图片,然后当您单击其中一张时,它会填充、再次单击、缩小、单击另一张、填充等等...
为此,您可以使用图片框上的 Dock 和 Visible 属性。现在,您似乎也在询问如何 来实际编写代码。好吧,如果您显示一些代码,我可以指点一下,而我的方法是:
将所有图片框放在一个列表中,并为它们分配状态Big 或Small。
为每个图片框写一个OnClick,改变点击图片框的状态。
然后每个 OnClick 都会调用一个辅助函数,该函数会遍历列表中的每个图片框并隐藏小的图片框和 DockStyle.Fill 大的图片框。
上面的算法能满足你的需要吗?
【讨论】:
picturebox2.Visible = false,您可以通过编程方式隐藏它们
试试这样的。代码没有被重构,但我相信你可以做到这一点
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;
}
【讨论】: