如何在C#中编码以通过Form2访问Form 1 checkedBox并在Form2中执行某些操作

时间:2017-03-08 12:07:18

标签: c# forms graph

Form2中有两个图形,用户在Form1的复选框1上输入勾选并按下加载按钮。在该程序显示后启用chart1或chart2。如果用户选择复选框1和2,则显示两个图形。如果用户选中复选框1,则只显示chart1.请通过给定的编码示例帮助我。我附上了我的界面。

This is a checkbox and load button There is a 2 graph

3 个答案:

答案 0 :(得分:0)

您可以将公共变量声明为布尔值,并根据复选框值更改值。

答案 1 :(得分:0)

我认为最干净的解决方案是创建一个构造函数,该构造函数将两个bool作为参数,并根据这些值显示图形。

答案 2 :(得分:0)

@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();

这将创建一个对话框窗口,只要第二个表单打开,用户将无法访问第一个表单的按钮。