我在form1
中有一个复选框,当它被选中时,PictureBox
中的form2
可见,但是当我取消选中时,我想要刷新form2
以便{ {1}}不可见。此代码位于PictureBox
。这是一个打开表单的按钮,如果没有打开,但如果表单打开则刷新它。问题是它不令人耳目一新。有谁能告诉我出了什么问题?
form1
}
答案 0 :(得分:3)
在表单上调用Refresh只会强制重新绘制它。没有任何理由可以假设它将以不同的方式重新绘制。您必须覆盖该表单中的OnPaint()方法。显然,您没有使用OnPaint绘制图像,而是使用PictureBox。将该控件的Visible属性设置为false将使图像消失,无需其他帮助。
答案 1 :(得分:2)
我会在辅助表单上添加一个公共方法来显示/隐藏图片,因为看起来第二种形式不知道第一种形式。然后在第一个表单上单击/复选框设置,而不是在第二个表单上执行“REFRESH”,如果尚未执行此操作,则创建表单。创建后,调用您在辅助表单上公开的任何方法,以根据需要专门显示或不显示。
编辑澄清
@ a13xy,实际上是相反的......第二种形式不知道第一种形式,但是,有一种方法在第二种情况下是公开的。然后在FIRST表单上,在复选框的点击/值更改事件中,您只需从中调用该方法...例如示例代码......
public void startbutton_Click(object sender, EventArgs e)
{
if (_FavoritesForm == null)
{ _FavoritesForm = new tuesday();
_FavoritesForm.Closed += new EventHandler(_FavoritesForm_Closed);
_FavoritesForm.Show();
}
else
{ _FavoritesForm.Refresh();
}
_FavoritesForm.ShowHide( IsCurrentForms.CheckBox.IsCheckedValue );
}
您的复选框控件名称或其Checked值属性不是肯定的,只需使用您的表单值直接调用第二个表单的方法,并且SECOND表单中的方法可能类似于......
public void ShowHide( Boolean ShowTheImage )
{
// value provided as a direct parameter from the first form,
// THISform knows about its own Picture property and can directly
// set the visibility within its scoped control.
this.YourPicture.Visible = ShowTheImage
}