请教一个winform当中窗体的show()问题

zcj1110 2013-12-07 09:55:57
在开发当中遇到一个奇怪的问题,比如如下代码

Form1 frm1 = new Form1();

frm1.Show();//重要的是这里,

我的Form1当中有个datagridview控件,一个显示所有商品(注意:这个datagridview是有一个checkbox列的)

默认选择第一条商品把它的适用等级加载出来,这个时候如果已存在数据库当中的,就选中相应的checkbox,跟踪的时候是有去执行的,但是Form1 frm1=new Form1()执行完,执行Show()显示窗体后,不能够正常后台赋值勾选
这个问题很奇怪啊,难道Show会把之前选中的checkbox去掉

用ShowDialog打开的话 能够正常后台赋值勾选

不知道我有没有描述清楚我的问题,谢谢各位啦
...全文
503 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
St_Jar 2013-12-10
  • 打赏
  • 举报
回复
7楼的方法,楼主可以试一下
hzpdh 2013-12-07
  • 打赏
  • 举报
回复
你可能在窗体的初始里写了东西,用SHOW的话是否存在无法初始化的问题?如果是我说的这样,你把窗体的构造函数Form1()方法重写一个 如Form1(object pObj)在做NEW的时候 给他带入参数
zou0131 2013-12-07
  • 打赏
  • 举报
回复
Form1 frm1 = new Form1(); frm1.show(); 这样new出来的窗口可以说是重新打开了一个,你可以通过重组构造函数通过传参数的形式去控制f里面datagridview的checkbox选中状态,例如: 在Form1页面内写上 public Form1(参数) { ... }
zcj1110 2013-12-07
  • 打赏
  • 举报
回复
后台都执行这段代码的 给checkbox赋值 for (int i = 0; i < this.dataGridView1.RowCount; i++) { this.dataGridView1.Rows[i].Cells[0].Value = 1; } 用Show打开窗体时显示无法选中的checkbox 用ShowDialog打开的话 能够正常后台赋值勾选
振浩 2013-12-07
  • 打赏
  • 举报
回复
有一点要注意的是showDialog会使程序堵塞在那里,例如这样 private void a() { int i = 0; form1 frm = new form1(); frm.showDialog(); i++;//在关闭frm之前,i++是不会执行的 } 而show会直接执行,不会堵塞 private void a() { int i = 0; form1 frm = new form1(); frm.show(); i++;//frm显示出来之后就执行了i++ } 如果你showDialog能勾选,show不能勾选的话,你就要断个点慢慢调试,看看在哪里出问题了
t_kong 2013-12-07
  • 打赏
  • 举报
回复
用个_validating之类的事件赋值试下。
zcj1110 2013-12-07
  • 打赏
  • 举报
回复
用Show打开窗体无法选中的checkbox 用ShowDialog打开的话 能够正常后台赋值勾选
zcj1110 2013-12-07
  • 打赏
  • 举报
回复
private void OrderDetail_Load(object sender, EventArgs e) { LoadOrder(); } private void LoadOrder() { HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create(pvServiceUrl + "GetOrders1?size=" + pagesize + "&opta=load&where=" + "where B.isprint=0&token=" + this.token + "&zk100=" + zk100printpagesize + "&syt=" + sytprintpagesize + "&ascn=" + ascnprintpagesize + "&sigo=" + sigoprintpagesize); HttpWebResponse wResp = wReq.GetResponse() as HttpWebResponse; wReq.AllowAutoRedirect = false; // 获取输入流 DataSet ds = new DataSet(); ds.ReadXml(wResp.GetResponseStream()); DataTable dt = ds.Tables[0]; this.dataGridView1.DataSource = dt; for (int i = 0; i < this.dataGridView1.RowCount; i++) { this.dataGridView1.Rows[i].Cells[0].Value = 1; } }
youzelin 2013-12-07
  • 打赏
  • 举报
回复
我自己碰到过这样一个问题,我不知道你们(特别是楼主)碰到过没有:Form_Load 事件里面写一段代码,其实这段代码是 有 bug 的。但是F5运行,他没有中断并高亮显示出错行,而是正常显示 form,但是之后会出现操作怪异现象。也就是说 form_load 吞了这个 exception,没有 throw。所以你可以试试在 load 事件里面 try 一下,看看有没有问题。可以先试着排除一下,我也不确定你遇到的是不是这个问题。
threenewbee 2013-12-07
  • 打赏
  • 举报
回复
你在Form_Load里面写了什么没有?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧