Form2中有两个图形,用户在Form1的复选框1上输入勾选并按下加载按钮。在该程序显示后启用chart1或chart2。如果用户选择复选框1和2,则显示两个图形。如果用户选中复选框1,则只显示chart1.请通过给定的编码示例帮助我。我附上了我的界面。
答案 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();
这将创建一个对话框窗口,只要第二个表单打开,用户将无法访问第一个表单的按钮。