| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1834 人关注过本帖
标题:程序调试闪退,无法执行
只看楼主 加入收藏
Sephirose
Rank: 1
来 自:四川-乐山
等 级:新手上路
帖 子:51
专家分:0
注 册:2013-3-26
结帖率:55.56%
收藏
已结贴  问题点数:5 回复次数:2 
程序调试闪退,无法执行
两个窗口,form1和form2.
form1
图片附件: 游客没有浏览图片的权限,请 登录注册

form2
图片附件: 游客没有浏览图片的权限,请 登录注册

想实现的功能是在Form2窗口中选择项后,点确定将里面的值在form1窗口的会员信息里的三个textbox里显示出来,但是点击调试程序闪了一下就关闭了,点击开始执行则显示的是未将对象引用设置到对象实例,异常文本为:
System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 WindowsFormsApplication1.Form1.Form1_Load(Object sender, EventArgs e) 位置 D:\WYF\毕业设计(修改)\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs:行号 22
   在 System.Windows.Forms.Form.OnLoad(EventArgs e)
   在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   在 System.Windows.Forms.Control.CreateControl()
   在 System.Windows.Forms.Control.WmShowWindow(Message& m)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, I

两个窗口代码为:
form1:
using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form2 fv = null;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.textBox1.Text = fv.findv[1].ToString();//这个就是异常文本里指的第22行
            this.textBox3.Text = fv.findv[0].ToString();
            this.textBox3.Text = fv.findv[2].ToString();
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {

            Form2 fv = new Form2();
            fv.ShowDialog();
        }

      
    }
}

form2
using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {

        public string id;
        public string[] findv;


        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Sanck.con.Open();
            SqlDataAdapter dap = new SqlDataAdapter("select * from 会员表 where 编号 like '%" + this.textBox1.Text + "%'", Sanck.con);
            DataSet ds = new DataSet();
            dap.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0].DefaultView;
            Sanck.con.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form1 ss = new Form1();

            using (SqlCommand comd = new SqlCommand("select 编号,姓名,折扣 from 会员表 where 编号='" + id + "'", Sanck.con))
            {
                Sanck.con.Open();
                SqlDataReader dr = comd.ExecuteReader();
                if (dr.HasRows)
                {
                    ss.fv = this;
                    dr.Read();
                    this.findv = new string[3] { dr[0].ToString(), dr[1].ToString(), dr[2].ToString() };
                }
                dr.Close();
                Sanck.con.Close();
            }
            ss.ShowDialog();
            this.Hide();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //获取到点击行所属的id
            id = this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
        }
    }
}
搜索更多相关主题的帖子: 会员 Object 
2013-04-01 18:58
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:5 
在Form2的button2_Click方法里面,Form1 ss = new Form1();后面加上一句,ss.fv = this;

[ 本帖最后由 yhlvht 于 2013-4-1 23:48 编辑 ]
2013-04-01 20:32
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
if (dr.HasRows)
{
    ss.fv = this;
    dr.Read();
    this.findv = new string[3] { dr[0].ToString(), dr[1].ToString(), dr[2].ToString() };
}
你能把ss.fv = this;这句从if里面拿出来不,因为如果没有进入if,ss.fv就没有被赋值,还是null,在Form1的Load事件里面依然会报错。
不拿出来也行,但在Form1的Load事件里面,你要加个判断,判断fv是不是null,如果是null就不执行后面的语句
2013-04-01 23:51
快速回复:程序调试闪退,无法执行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.088506 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved