当前位置:编程学习 > C#/ASP.NET >>

c# winform窗体间传递参数的问题

在Form1窗体中定义了一个属性
public int sendid
        {
            get
            {
                return Int32.Parse(this.dataGridView1.CurrentRow.Cells["tid"].Value.ToString());
            }
        }
然后我在recdata这个窗体中用如下语句:
protected Form1 f = new Form1();
 private void recdata_Load(object sender, EventArgs e)
        {
            this.textBox1.Text = f.sendid.ToString();
        }
就老出错。
说:Int32.Parse(this.dataGridView1.CurrentRow.Cells["tid"].Value.ToString())这段程序未将对象引用设置到对象的实例
高手帮帮忙! --------------------编程问答-------------------- dataGridView1可能还没有加载数据
--------------------编程问答-------------------- 需要自己判断this.dataGridView1.CurrentRow.Cells["tid"].Value,如果是NULL则返回0 --------------------编程问答-------------------- 也有可能是CurrentRow==NULL --------------------编程问答-------------------- 检查Form1中的数据加载顺序。
也有可能是Cells["tid"]对应的数据是空值null --------------------编程问答-------------------- 不会的呀我已经加载了数据了啊。dataGridView1里面有大概十几条数据的啊 --------------------编程问答-------------------- 你能看到dataGridView1? --------------------编程问答-------------------- tid是数据库里自动编号的字段不会为空的 --------------------编程问答-------------------- this.dataGridView1.CurrentRow.Cells["tid"].Value.ToString()这句里肯定有是NULL的对象,你用察看器一个个看一下,估计this.dataGridView1.CurrentRow=null或this.dataGridView1.CurrentRow.Cells["tid"]=null的可能性比较大 --------------------编程问答-------------------- 我用另一种方式就可以的。
就是在recdata里面定义一个
 public string sid
        {
            set
            {
                _sid = value;
            }
        }   
然后在FORM1里面用
frm.sid = this.dataGridView1.CurrentRow.Cells["tid"].Value.ToString();
这就可以的 --------------------编程问答-------------------- tid是数据库里自动编号的字段不会为空的
-----------------------------------------
兄弟不是以数据库为准的,是要看你有没有冲数据库中取出来,然后放到了dataGridView1里的。 --------------------编程问答-------------------- protected Form1 f = new Form1();
你定义了一个新的窗体,dataGridView1里自然是没数的 --------------------编程问答-------------------- dataGridView1我是分页的他每一页的最后一条记录是默认为空的我不知道怎么把那最后一条去掉
--------------------编程问答-------------------- 这儿有点看不懂。
好像你在两个窗体里面互相调用? --------------------编程问答-------------------- dataGridView1设一下显示的行数为你每页显示的记录件数 --------------------编程问答-------------------- 很明显

this.dataGridView1.CurrentRow.Cells["tid"].Value.ToString(
=======
这个是没有值的 ,但是程序运行了 。。。。。。。。。。。。。。。。。 --------------------编程问答-------------------- 多谢各位了我再研究研究看看。 --------------------编程问答-------------------- cbgn(小玉) ( ) 信誉:100    Blog   加为好友  2007-07-05 17:00:19  得分: 0  
 
 
   protected Form1 f = new Form1();
你定义了一个新的窗体,dataGridView1里自然是没数的
  
 
------------------------------------
说的对
建议楼主改recdata的构造函数来传值 --------------------编程问答-------------------- 如何设置dataGridView显示的行数为每页显示的记录件数啊,我是菜鸟啊以前是做BS模式的刚开始研究CS模式的东西 --------------------编程问答-------------------- 有正解了,jf
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,