标题:MDI 窗口在打开一个子窗口同时关闭已经打开的子窗口时,子窗口上 datagridv ...
只看楼主
aqx
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-2
结帖率:100%
已结贴  问题点数:20 回复次数:11 
MDI 窗口在打开一个子窗口同时关闭已经打开的子窗口时,子窗口上 datagridview 中的列标题刷新的问题
在MDI窗口中打开一个带有datagridview控件的子窗口,同时关闭另一个已经打开的带有datagridview控件的子窗口时出现datagridview中的列标题中含有已关闭子窗口中datagridview的列标题,如下图,请教如何解决
搜索更多相关主题的帖子: 如何 
2014-08-06 12:53
aqx
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-2
得分:0 
补充说明一下:使用的VS版本为VS2010旗舰中文版,datagridview在窗口load事件中绑定数据源。
2014-08-06 12:57
aqx
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-2
得分:0 
打开一个子窗口,同时关闭已打开子窗口的代码如下
        private consumer f_consumer;
        private void ConsumerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.MdiChildren.Length > 0)
                this.MdiChildren[0].Close();
            if (f_consumer == null || f_consumer.IsDisposed)
            {
                f_consumer = new consumer();
                f_consumer.MdiParent = this;
                f_consumer.Location = new Point(0, 0);
                f_consumer.Width = f_consumer.Parent.ClientSize.Width;
                f_consumer.Height = f_consumer.Parent.ClientSize.Height;               
                f_consumer.Show();
                f_consumer.Activate();
            }
            else
            {
                f_consumer.Focus();
            }
        }
2014-08-06 13:03
aqx
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-2
得分:0 
补充:在有VS2010的环境中调试没有出现此问题,在没有VS2010的电脑上安装后发现此问题。
2014-08-06 13:15
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
得分:7 
这个控件有没有重写过,或是被皮肤控件控制过

站在春哥的肩膀上
2014-08-06 14:08
aqx
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-2
得分:0 
回复 5 楼 xydddaxia
xydddaxia,你好
没有用皮肤控件,此控件也没有被重写.
2014-08-06 15:10
aqx
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-2
得分:0 
回复 5 楼 xydddaxia
运行软件后,在MDI中第1次打开一个子窗口显示是正常的,再打开别的子窗口就不正常了。不正常的时候,最小化此子窗口,然后最大化,显示就又正常了。
2014-08-06 15:13
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
得分:0 
this.dataGridView1.Refresh();
this.dataGridView1.Invalidate();
刷新控件试试

站在春哥的肩膀上
2014-08-07 09:20
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:7 
你调试下看看datagridview有没有数据

Maybe
2014-08-08 22:43
aqx
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-3-2
得分:0 
回复 9 楼 邓士林
在窗口关闭的时候加上if(dataGridView1.IsDisposed==false)
                       dataGridView1.Dispose();
问题就解决了。
但对于列数比较多的datagridview,在滚动水平滚动条时,有 部分列标题乱了,这个问题还没有解决。
2014-08-09 10:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-434767-1-1.html




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

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