如果我在的构造函数里面绑定了datagridview数据源。那么我把这个组件从工具箱拖入form1算构造一次了吗?
因为form上的绑定源的列被创建了,在form的设计器里面生产了相关代码。
然后我启动F5是不是又构造了一次?这样数据源相当于绑定了2次?我组件拖入FORM的时候,表的列就加载进datagridview了,我启动F5的时候,又加载了一次
这样表的列就重复了一次。请教怎么解决
因为form上的绑定源的列被创建了,在form的设计器里面生产了相关代码。
然后我启动F5是不是又构造了一次?这样数据源相当于绑定了2次?我组件拖入FORM的时候,表的列就加载进datagridview了,我启动F5的时候,又加载了一次
这样表的列就重复了一次。请教怎么解决
这样表的列就重复了一次。
没这种可能吧..
然后F5启动的时候又创建了一次,这样就把同一张表绑定了2次
如果有多余的列或其它组件被生成,那可能是设计器出了问题(我碰到过),你可以试着把组件删掉再重新放一个,或者看一下.designer.cs文件。
请教怎么解决[/size]
在派生类的构造函数里直接绑定数据源是这个原因。
问题现在是这样:因为我构造dgv的构造函数里面绑定了数据源,所以执行new dgv()的时候,完毕了就已经有数据源的列了,然后开始执行designer.cs,因为设计器在我把组件拖入窗体的时候生产了一些代码,所以会执行Columns.AddRange,这样就是2倍的列数据。
请教怎么解决
datagridview.AllowUserToAddRows=false;
我能想到的有两个办法:
1、如果你的派生类只是为了统一数据源的话,建议不要用派生类,直接用原生的DataGridView。可以写一个公用的方法来初始化数据源,然后在每一个用到这个数据源的地方调用此方法来初始化。
2、仍旧在派生类里绑定数据源,但只在运行时绑定,而不在设计器中绑定。可以用DesignMode这个属性来判断当前是否处于设计模式下。这样做,在设计器里看不到列,而在运行时才能看得到。