簡體   English   中英

如何用C#編寫代碼以通過Form2訪問Form 1 CheckedBox並在Form2中執行一些操作

[英]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。請為此提供編碼示例,為我提供幫助。我為此附加了界面。

這是一個復選框和加載按鈕 有一個2圖

您可以將公共變量聲明為布爾值,並根據復選框的值更改該值。

我認為最干凈的解決方案是創建一個構造函數,該構造函數將兩個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM