诡异问题,不解,关于datagridview

问题描述

如果我在的构造函数里面绑定了datagridview数据源。那么我把这个组件从工具箱拖入form1算构造一次了吗?因为form上的绑定源的列被创建了,在form的设计器里面生产了相关代码。然后我启动F5是不是又构造了一次?这样数据源相当于绑定了2次?我组件拖入FORM的时候,表的列就加载进datagridview了,我启动F5的时候,又加载了一次这样表的列就重复了一次。请教怎么解决

解决方案

解决方案二:
我组件拖入FORM的时候,表的列就加载进datagridview了,我启动F5的时候,又加载了一次这样表的列就重复了一次。没这种可能吧..
解决方案三:
引用1楼luochanghua的回复:

我组件拖入FORM的时候,表的列就加载进datagridview了,我启动F5的时候,又加载了一次这样表的列就重复了一次。没这种可能吧..

因为我绑定数据源在构造函数里面啊
解决方案四:
就一次,你那个肯定是你没有清除列吧,有固定的列,代码中又增加了列?
解决方案五:
引用3楼bdmh的回复:

就一次,你那个肯定是你没有清除列吧,有固定的列,代码中又增加了列?

当我拖入dgv的时候,因为绑定源在构造函数里面,所以这个时候列就被创建了,在Designer.cs代码里面可以看到拖入组件的时候列就生产了。然后F5启动的时候又创建了一次,这样就把同一张表绑定了2次
解决方案六:
在设计器里把组件拖入窗体的时候,并不是创建了一次,而是设计器自动为你生成了创建组件的代码,而当执行到这段代码时(按F5),组件才会被创建,因此不存在两次创建的问题。如果有多余的列或其它组件被生成,那可能是设计器出了问题(我碰到过),你可以试着把组件删掉再重新放一个,或者看一下.designer.cs文件。
解决方案七:
引用5楼effun的回复:

在设计器里把组件拖入窗体的时候,并不是创建了一次,而是设计器自动为你生成了创建组件的代码,而当执行到这段代码时(按F5),组件才会被创建,因此不存在两次创建的问题。如果有多余的列或其它组件被生成,那可能是设计器出了问题(我碰到过),你可以试着把组件删掉再重新放一个,或者看一下.designer.cs文件。

[size=16px]问题是这样的,是因为我构造dgv的构造函数里面绑定了数据源,所以执行newdgv()的时候,完毕了就已经有数据源的列了,然后开始执行designer.cs,因为设计器在我把组件拖入窗体的时候生产了一些代码,所以会执行Columns.AddRange,这样就是2倍的列数据。请教怎么解决[/size]
解决方案八:
这句话我不是很明白:“是因为我构造dgv的构造函数里面绑定了数据源”。你的拖到窗体上的组件是原生的DataGridView控件,还是自己从DataGridView派生的一个类?建议你把你构造dgv的构造函数以及设计器生成及初始化dgv的代码帖出来,有助于解决问题。如果是在派生类的构造函数里直接绑定数据源可不是什么好主意。通常情况下,为了避免设计器为控件属性的默认值生成代码,可以在该属性上添加DefaultValueAttribute,对于集合我还真不知道应该怎么做。
解决方案九:
引用7楼effun的回复:

这句话我不是很明白:“是因为我构造dgv的构造函数里面绑定了数据源”。你的拖到窗体上的组件是原生的DataGridView控件,还是自己从DataGridView派生的一个类?建议你把你构造dgv的构造函数以及设计器生成及初始化dgv的代码帖出来,有助于解决问题。如果是在派生类的构造函数里直接绑定数据源可不是什么好主意。通常情况下,为了避免设计器为控件属性的默认值生成代码,可以在……

在派生类的构造函数里直接绑定数据源是这个原因。问题现在是这样:因为我构造dgv的构造函数里面绑定了数据源,所以执行newdgv()的时候,完毕了就已经有数据源的列了,然后开始执行designer.cs,因为设计器在我把组件拖入窗体的时候生产了一些代码,所以会执行Columns.AddRange,这样就是2倍的列数据。请教怎么解决
解决方案十:
我大概没看明白不过你试试datagridview.AllowUserToAddRows=false;
解决方案十一:
不对上面的写错了我记得应该有阻止自动生成列的属性,或者你把手动添加列的地方删了
解决方案十二:
引用8楼dionxu的回复:

在派生类的构造函数里直接绑定数据源是这个原因。问题现在是这样:因为我构造dgv的构造函数里面绑定了数据源,所以执行newdgv()的时候,完毕了就已经有数据源的列了,然后开始执行designer.cs,因为设计器在我把组件拖入窗体的时候生产了一些代码,所以会执行Columns.AddRange,这样就是2倍的列数据。

我能想到的有两个办法:1、如果你的派生类只是为了统一数据源的话,建议不要用派生类,直接用原生的DataGridView。可以写一个公用的方法来初始化数据源,然后在每一个用到这个数据源的地方调用此方法来初始化。2、仍旧在派生类里绑定数据源,但只在运行时绑定,而不在设计器中绑定。可以用DesignMode这个属性来判断当前是否处于设计模式下。这样做,在设计器里看不到列,而在运行时才能看得到。

时间: 2024-10-21 17:57:37

诡异问题,不解,关于datagridview的相关文章

一个十分诡异的NullReferenceException异常

看到标题大家可能会认为这个文章一定没有太大的新意,无非是忘记初始化一类的问题,但是建议大家慢慢看下去,我担保这个问题决非这么无聊,希望给大家增加一些乐趣啊! 大家可以这样重现这个问题: 1,在窗体上放置一个TabControl控件有2个页(tabPage1,tabPage2),tabPage1的为当前页. 2,在tabPage1上放置一个 DataGridView控件dgv1,tabPage2上放置一个DataGridView控件dvg2并且两个DataGridView的 AutoSizeCol

紧急求助,高手帮帮忙,搞了一天找不出原因datagridview更新的问题

问题描述 privatevoiddgv_CellEndEdit(objectsender,DataGridViewCellEventArgse){//stringsql="updatesalebookset"+dgv.CurrentCell.OwningColumn.HeaderCell.Value+"='"+dgv.CurrentCell.Value+"'whereid="+Convert.ToInt32(dgv.CurrentCell.Row

mfc-MFC中deque的at()函数访问,诡异的问题

问题描述 MFC中deque的at()函数访问,诡异的问题 我的程序 for (int i = 0; i <EEGData3_all.size(); i++) { if (i / 200 % 5 != 0 && i / 200 % 5 != 1)//记录先验知识对应的脑电,200Hz,下位机向上位机发送数据频率 { EEGData1.push_back(EEGData1_all[i]); EEGData2.push_back(EEGData2_all[i]); EEGData3.pu

取不到datagridview的currentCell

问题描述 datagridview的datasource正确绑定了,在debug情况下可以看到值,画面上的数据也都正确显示了,但是在点击画面上某个按钮的时候,currentcell的值是null,而且rowcount是0,rows集合也是空的,看起来像是没有数据.这种情况大家碰到过吗? 解决方案 解决方案二:你已经绑定数据了的怎么肯能是空的呢这种问题我没有遇到过哦解决方案三:对,因为你一开始焦点没有落到datagridview上,请先点击该控件,然后再点击其它--这是个问题,就合着用吧--解决方

datagridview-C#中Datatable删除行的一个不解之处

问题描述 C#中Datatable删除行的一个不解之处 C#把Datatable中重复的行删除后绑定DataGridView,发现没变,不清楚是什么情况,各位帮忙看看.代码如下: for(int i=0;i<dt.rows.count;i++) { for(int j=0;j<dt.rows.count;j++) { if(dt.rows[j][2].tostring()==dt.rows[i][2].tostring()) { dt.rows[j].delete(); dt.AccpetCh

winform DataGridView关于SelectionChanged事件的疑问

问题描述 我在cs文件中声明一个datagridView,注册事件(1)在Load事件中绑定数据并将控件添加到Form窗体中,运行后,selectionchanged事件运行了一次.(2)在Load事件中先添加到窗体中并绑定数据,运行后,selectionChanged事件运行了三次.不知道这是为什么?太诡异了吧高人们求指点 解决方案 解决方案二:每次load都+=了,你应该在创建时绑定一次就够了,绑定多次就会执行多次解决方案三:publicpartialclassForm2:Form{Data

欣龙控股被证监会调查立案公告前后股价走势诡异引质疑

2013年9月12日,欣龙控股(行情,问诊)收到证监会立案调查通知.次日晚间,公司才将此事公告天下.从证监会发出立案调查通知到投资者来得及在股价上做出反应,其间有两个交易日的时间.而在公众应该并不知晓公司已经被立案的这两个交易日的"真空期",公司股价却好像未卜先知一样提前出现大跌.对此,有维权律师提出内幕交易嫌疑,并质疑公司为何不立即进行公告,而留出两天"后患无穷"的真空期. 金融界盈利宝,活期储蓄利率提升1000% 12日通知13日晚间才公告 2013年9月13日

游戏-求网络设置大神一个诡异的问题。。。。

问题描述 求网络设置大神一个诡异的问题.... 本人同一台笔记本,为什么在公司登陆游戏就卡住,回到家就可以正常进入游戏,很流畅的玩,网上说的改mtu值也改了,但是在公司登陆的时候仍然卡住进不了游戏,请问有木有懂电脑的大神指导下到底哪里的问题....我感觉跟mtu值没有关系,倒腾好几天了.跪求解答!!!! 补充:1.家里公司都是无线网.ip设置是自动获取. 2.都是10兆网络,特意下载了几个东西试了下跟网速无关. 3公司跟家里都是联通的网 解决方案 公司的socket端口封了吧 解决方案二: 试试

datagridview-vb.net DataGridView 动态逐个选择所有单元格

问题描述 vb.net DataGridView 动态逐个选择所有单元格 For i As Integer = 0 To DataGridView1.Rows.Count - 1 i += 1 DataGridView1.Rows(i).Cells((DataGridView1.CurrentCell.ColumnIndex)).Selected = True Next 这样不行,用TIMER控件可能行,但是俺不会弄,请高手指点! 解决方案 For i As Integer = 0 To Dat