繁体   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