wxy新人小白 2019-08-29 11:32 采纳率: 31.3%
浏览 1806
已采纳

在C#中如何解决未将对象引用设置到对象的实例。

想达到的效果:主窗口上面是一个容器panel,里面有3个下拉框,左边是一个toolStrip菜单栏,剩余部分是一个panel1(用来显示五个子窗口),如第一个图;按完第一个按钮,在主窗口的panel1上显示第一个子窗口(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
            w1.WindowState = FormWindowState.Maximized;
            this.panel1.Controls.Add(w1);  // 添加w1窗体
            //w1.Show(this);
            w1.Show();
            flag = true;
        }
                 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();
        }

启动时在string a = ((Form1)this.Owner).comboBox1.Text;处显示其他信息: 未将对象引用设置到对象的实例。
若将去掉this.panel1.Controls.Add(w1),w1.TopLevel = true,启动时Win就出现在电脑下面的任务栏里了。
我想至始至终任务栏里就一个主窗口,应该怎么改
图片说明图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-08-29 23:33
    关注

    w1.Show(this);才能使用 Owner

    你那样不能,可以借助Application.OpenForms["Fomr1"]访问窗体。

    另外,请加群

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!