显示/刷新按钮正常工作

时间:2011-01-29 18:41:19

标签: c# winforms button refresh

我在form1中有一个复选框,当它被选中时,PictureBox中的form2可见,但是当我取消选中时,我想要刷新form2以便{ {1}}不可见。此代码位于PictureBox。这是一个打开表单的按钮,如果没有打开,但如果表单打开则刷新它。问题是它不令人耳目一新。有谁能告诉我出了什么问题?

form1

}

2 个答案:

答案 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  
}