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 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决