| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 813 人关注过本帖
标题:winform数据传递问题
只看楼主 加入收藏
Sephirose
Rank: 1
来 自:四川-乐山
等 级:新手上路
帖 子:51
专家分:0
注 册:2013-3-26
结帖率:55.56%
收藏
 问题点数:0 回复次数:7 
winform数据传递问题
如图
图片附件: 游客没有浏览图片的权限,请 登录注册

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

设计的是选定datagridview里的信息后,点击确定,将里面的编号,姓名,折扣三个内容显示到另一窗口的三个textBox中,代码如下
附件1:
        public string id;
        public string[] alt;
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //获取到点击行所属的id
            id = this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
        }


        private void button2_Click(object sender, EventArgs e)
        {
            FormMain fm = new FormMain();
            using (SqlCommand cmd = new SqlCommand("select 编号,姓名,折扣 from 会员表 where 编号='" + id + "'", Sanck.con))
            {
                Sanck.con.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    fm.fv = this;
                    dr.Read();
                    this.alt = new string[2] { dr[0].ToString(), dr[1].ToString(),dr[2].ToString() };
                }
                dr.Close();
                Sanck.con.Close();
            }

            this.Close();
            
        }

附件2

public FindVip fv = null;
private void FormMain_Load(object sender, EventArgs e)
        {
            this.textBox2.Text = fv.alt[0].ToString();
            this.textBox1.Text = fv.alt[1].ToString();
            this.textBox3.Text = fv.alt[2].ToString();
        }

这段代码在程序的其他页面使用正常,但是到了这个页面就是点击确定后,三个textBox里没有显示内容。页面上唯一的区别就是这三个textBox是放在一个tabControl控件里的,是这个tabControl1的属性需要调整呢还是什么问题,求各位帮忙解答啊,谢了

[ 本帖最后由 Sephirose 于 2013-3-30 15:18 编辑 ]
搜索更多相关主题的帖子: public private 
2013-03-30 15:16
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
你试试用构造函数传值

FormMain(string a ,string b ,string c)

或者设置下 FormMain textbox modifiers 为PUBLIC
fv.TEXTBOX1.TEXT = A
... ...

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2013-04-01 09:45
Sephirose
Rank: 1
来 自:四川-乐山
等 级:新手上路
帖 子:51
专家分:0
注 册:2013-3-26
收藏
得分:0 
回复 2楼 wangnannan
试过了,属性值一直是Public,我把它提出来单独调试,但是调试不了,窗口闪了一下就消失了,直接执行显示的是未将对象引用设置到对象的实例
2013-04-01 18:49
玲度飘垚
Rank: 1
来 自:河南
等 级:新手上路
帖 子:4
专家分:9
注 册:2013-4-4
收藏
得分:0 
这是窗体传值  有两种方法  第一种是 利用构造函数(不用owner) 另一种把传值窗体实例化 (必须用上owner 关键字)

小兔子的最大幸福就是 枕着胡萝卜 抱着西红柿 盖着大白菜
2013-04-04 13:22
BCSJ_001
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2013-4-5
收藏
得分:0 
应该是DataGridView选中的哪个点击事件导致你没有获取到Id的值,最好使用dataGridView1_CellClick事件不要使用dataGridView1_CellContentClick事件
2013-04-05 11:23
lxb932979339
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:84
专家分:313
注 册:2013-4-24
收藏
得分:0 
你可以这样试下:给窗体创建一个TextBox控件时,其实跟定义一个字段是一样的,你可以给TextBox1封装下就像这样:
 public TextBox textbox1
        {
            get { return textBox1; }
            set { textBox1 = value; }
        }
2013-04-25 04:25
waterfisher
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-24
收藏
得分:0 
附件1:
public static string id= "";
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
   //获取到点击行所属的id
   id = this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
 }


        
附件2
private void FormMain_Load(object sender, EventArgs e)
        {
            this.textBox2.Text = FindVip.id;
        }

2013-04-25 10:05
lxb932979339
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:84
专家分:313
注 册:2013-4-24
收藏
得分:0 
你的意思是两个窗体同时存在,然后她们之间的数据传递么?如果是这样的话也好办,
1:在FindVip中声明一个属性:
public Main frmMain
{
    set;get;
}
2:在Main中对要访问的3个TextBox控件进行字段属性封装:
public TextBox textbox1
{
    set{TextBox1=value;}
    get{return TextBox1}
}
这三个TextBox控件都是这样;
3:在Main中实例化FindVip的地方写上frmMain=this;代码如下:
FindVip frmFindVip=new FindVip();
frmFindVip.frmMain=this;
frmFindVip.show();

最后调用就行了,代码如下:
 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
         {
             //获取到点击行所属的id
             id = this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
            frmMain.textbox1.Text=this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();//读取姓名的Textbox
            
               
         }
这样写你试试,我估计没错。。。

[ 本帖最后由 lxb932979339 于 2013-4-25 10:54 编辑 ]
2013-04-25 10:52
快速回复:winform数据传递问题
数据加载中...
 
   



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

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