wxy新人小白
2019-08-27 18:38
采纳率: 72.9%
浏览 434

如何在C#中使主窗口的combobox选完后,子窗口的图生成

图片说明图片说明图片说明

主窗口上面是一个容器panel,里面有3个下拉框,左边是一个toolStrip菜单栏,剩余部分是一个panel1(用来显示各个子窗口),如第一个图;按完第一个按钮,在主窗口的panel1上显示第一个子窗口(Win1)的内容,效果如图二;图三是第一个子窗口(Win1)

下面是各个用的程序,一共五个,我这只写了Win1 的,其他的类似

 Win1 w1; w1 = new Win1();
  private void toolStripButton1_Click(object sender, EventArgs e)
        {
            this.panel1.Controls.Clear();  // 清空原有的控件
            w1.TopLevel = false;  // 非顶级窗口
            w1.FormBorderStyle = FormBorderStyle.None;  // 不显示标题栏
            w1.Dock = System.Windows.Forms.DockStyle.Fill;  // 填充panel
            this.panel1.Controls.Add(w1);  // 添加w1窗体
            w1.Show();
        }
                 private void button1_Click(object sender, EventArgs e)
        {
            if (flag == true && flag1 == true && flag2 == true)
            {
                w1.Creatchart1();

            }
        }

下面是子窗口Win1的其中的一个chart的程序

 private void Creatchart1()
        {
            string a = ((Form1)this.Owner).comboBox1.Text;
            string b = ((Form1)this.Owner).comboBox2.Text;
            string c = ((Form1)this.Owner).comboBox3.Text;
            string wax = a + b + c;
            string dbPath = @"D:\历年高考分数.db";
            string sq = @"Data Source=" + dbPath;
            m = new SQLiteConnection(sq);
            m.Open();
            SQLiteDataAdapter mAdapter = new SQLiteDataAdapter("select " + wax + ",yxlc from 表2", m);
            DataSet ds = new DataSet();
            mAdapter.Fill(ds);
            DataTable dt = ds.Tables[0];
            Series Series1 = new Series();
            chart1.DataSource = dt;
            Series1.IsValueShownAsLabel = false;//是否显示图例
            chart1.Series.Add(Series1);
            chart1.Series["Series1"].ChartType = SeriesChartType.Spline;//形状
            chart1.Series[0].XValueMember = "yxlc";//X轴数据成员列
            chart1.Series[0].YValueMembers = wax;
            chart1.Series[0].IsValueShownAsLabel = true;//显示坐标
            chart1.DataBind();
            chart1.BringToFront();
            m.Close();
        }

w1.TopLevel = false; 这里改成true时,显示顶级子窗口不能添加到容器控件里
程序启动时this.panel1.Controls.Add(w1); // 添加w1窗体这里显示:非顶级窗体不能显示为模式对话框。在调用 Show 之前应从所有父窗体中移除该窗体。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • wxy新人小白 2019-09-09 11:22
    已采纳

    private void button1_Click(object sender, EventArgs e)
    {
    if (flag == true && flag1 == true && flag2 == true)
    {
    string wax = comboBox1.Text + comboBox2.Text + comboBox3.Text;
    w1.Creatchart1(wax);
    }
    }
    public void Creatchart1(string wax)

    打赏 评论
  • 去找下拉框的change事件,当改变是触发,然后就是你加载数据了。

    打赏 评论
  • zeromess 2019-08-28 00:22

    在主窗口下拉框的change事件中调用你写的“子窗口Win1的其中的一个chart的程序”方法,完成当下拉框改变的时候自动调用对应的Creatchart1()函数,就行了

    打赏 评论

相关推荐 更多相似问题