[英]How to code in C# for accessing Form 1 checkedBox by Form2 and do some action in Form2
在Form2中有兩個圖形,用戶在Form1中的復選框1上打勾,然后按Load按鈕。該程序顯示后啟用chart1或chart2。例如,如果用戶選中復選框1和2然后顯示兩個圖形。選中復選框1,然后僅顯示chart1。請為此提供編碼示例,為我提供幫助。我為此附加了界面。
您可以將公共變量聲明為布爾值,並根據復選框的值更改該值。
我認為最干凈的解決方案是創建一個構造函數,該構造函數將兩個bool
用作參數並基於這些值顯示圖形。
正如@Tamas Szabo和@ Danish_k12所寫的那樣,您需要在第二種形式中添加一個公共屬性。 在“加載”按鈕上,單擊“初始化新form2”。 然后檢查選中了哪個復選框,並相應地設置添加到第二個表單的公共屬性。 然后在第二種形式的Load事件中,根據您添加的公共屬性的值顯示第一幅或第二幅圖。 這是您可以實現的方法:
Form1-以Form2作為私有字段
namespace WindowsFormsApplication3
{
using System;
using System.Windows.Forms;
public partial class Form1 : Form
{
private Form2 form2;
public Form1()
{
this.InitializeComponent();
this.button_Load.Click += Button_Load_Click;
}
private void Button_Load_Click(object sender, EventArgs e)
{
if(this.form2 != null)
this.form2.Dispose();
this.form2 = new Form2();
if(this.checkBox1.Checked == true)
{
this.form2.IndexOfGraphToShow = 1;
}
if(this.checkBox2.Checked == true)
{
this.form2.IndexOfGraphToShow = 2;
}
if(this.form2.IndexOfGraphToShow == 1 || this.form2.IndexOfGraphToShow == 2)
{
this.form2.Show();
return;
}
MessageBox.Show("Select which graph to show", "Choose graph", MessageBoxButtons.OK, MessageBoxIcon.Error);
form2.Dispose();
}
}
}
窗體2:
namespace WindowsFormsApplication3
{
using System;
using System.Windows.Forms;
public partial class Form2 : Form
{
public Form2()
{
this.InitializeComponent();
this.Load += Form2_Load;
}
public int IndexOfGraphToShow { get; set; }
private void Form2_Load(object sender, EventArgs e)
{
if(this.IndexOfGraphToShow == 1)
{
// TODO: Show first graph
}
else if(this.IndexOfGraphToShow == 2)
{
// TODO: Show second graph
}
}
}
}
還有一件事。 僅當您一次可以顯示兩個圖形時,才在您的情況下使用復選框是一個不錯的選擇,因為可以選中兩個復選框。 如果您打算僅顯示一個圖形,請考慮使用選項集。
要顯示每次單擊按鈕的新表單,可以將顯示的表單存儲在私有字段中。 單擊按鈕時檢查該字段是否不為空。 如果是這樣,請處置舊表格並創建一個新表格。
當您顯示第二種形式時,您也可以考慮使用ShowDialog代替Show:
this.form2.ShowDialog();
這將創建一個對話框窗口,並且只要打開第二個表單,用戶將無法訪問第一個表單的按鈕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.