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

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

在开发当中遇到一个奇怪的问题,比如如下代码

Form1 frm1 = new Form1();

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

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

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

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

不知道我有没有描述清楚我的问题,谢谢各位啦 --------------------编程问答-------------------- 你在Form_Load里面写了什么没有? --------------------编程问答--------------------         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;
            }
} --------------------编程问答-------------------- 用Show打开窗体无法选中的checkbox
用ShowDialog打开的话  能够正常后台赋值勾选 --------------------编程问答-------------------- 用个_validating之类的事件赋值试下。 --------------------编程问答-------------------- 有一点要注意的是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不能勾选的话,你就要断个点慢慢调试,看看在哪里出问题了 --------------------编程问答-------------------- 后台都执行这段代码的 给checkbox赋值
for (int i = 0; i < this.dataGridView1.RowCount; i++)
             {
                 this.dataGridView1.Rows[i].Cells[0].Value = 1;
             }
用Show打开窗体时显示无法选中的checkbox
用ShowDialog打开的话  能够正常后台赋值勾选  --------------------编程问答-------------------- Form1 frm1 = new Form1();
frm1.show();
这样new出来的窗口可以说是重新打开了一个,你可以通过重组构造函数通过传参数的形式去控制f里面datagridview的checkbox选中状态,例如:
在Form1页面内写上
public Form1(参数)
{
    ...
} --------------------编程问答-------------------- 你可能在窗体的初始里写了东西,用SHOW的话是否存在无法初始化的问题?如果是我说的这样,你把窗体的构造函数Form1()方法重写一个 如Form1(object pObj)在做NEW的时候 给他带入参数 --------------------编程问答-------------------- 我自己碰到过这样一个问题,我不知道你们(特别是楼主)碰到过没有:Form_Load 事件里面写一段代码,其实这段代码是 有 bug 的。但是F5运行,他没有中断并高亮显示出错行,而是正常显示 form,但是之后会出现操作怪异现象。也就是说 form_load 吞了这个 exception,没有 throw。所以你可以试试在 load 事件里面 try 一下,看看有没有问题。可以先试着排除一下,我也不确定你遇到的是不是这个问题。 --------------------编程问答-------------------- 7楼的方法,楼主可以试一下
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,