|
1
5
听起来你好像在构造函数中添加控件。也许稍后再添加列——也许类似于覆盖
|
|
|
2
5
我以前见过带有Items属性的ComboBox的这种行为,这真的很令人沮丧。以下是我使用组合框解决这个问题的方法。您应该能够将此应用于DataGridView。 我创建了一个名为Items的“新”属性,并将其设置为不可浏览,并且明确地隐藏在序列化之外。在引擎盖下,它只访问真实的Items属性。
|
|
|
3
1
我遇到了一个类似的问题,并在这里发布了我的解决方案,因为当我写下我的问题时,这是最受欢迎的问题。每次我编译代码时,设计器都会自动在数据源中添加每个列(下次我构建代码时,它们会出现在正在运行的应用程序中),尽管自动生成列设置为false。 最终,我设法通过为我的一个列命名与自动生成的列相同的名称来阻止它(我的列最初是在数据源可用之前手动创建的)。 |
|
|
4
1
马克是对的。设计器查看构造函数以了解此自动生成行为。这是我绕过它的方法。 从构造函数中取出将DataTable构造/绑定到DataGridView的代码,并将其放置在一个方法中。
使用
哪里
很抱歉,如果这是明确的,但我永远不想忘记如何做到这一点! |
|
|
5
1
JaredPar的建议对我很有效:
|
|
|
6
0
我经常在自定义控件中这样做,如果你在DesignMode检查中将不想在设计器中执行的代码包装起来,它应该能解决你的问题。
|
|
|
7
0
这已经是一个老问题了,但在2014年的VS2013中仍然是一个问题。
我有一个
|
|
|
8
0
@JaredPar's answer
给了我解决这个问题的大部分方法,但任何包含我的控制
我想把列保留在构造函数中,这样它们就可以在可视化设计器中看到,所以我不得不禁用标准
这确实意味着设计师不能在├Designer任务中使用“编辑项目”等,也不能根据需要调整列的属性,但根据我的需要,这并不是特别有用,所以没有损失。 不管怎样,这解决了问题,这仍然意味着柱子在设计师中是可见的,这是我在这里的主要目标。 我只是想分享一下。 |
|
|
9
0
由于这对一些人来说仍然是一个问题,包括我自己,直到几天前,我想我会发布我的解决方案,以及从现在开始我在课堂上教给学生的解决方案:
首先,我创建了一个
现在,当我想绑定数据库(SQL Server,对于这段代码)中的数据时。我更改了列对象,并将每一列直接绑定到来自
对于上面的代码,DBConnection是我从中获取此代码的对象的公共属性,该对象存储了
这里的重点是,您可以通过在设计时创建列,然后将数据从DataTable直接绑定到列,来绑定要包含在DGV中的数据。这允许您拥有任何类型的列,而不仅仅是默认绑定机制提供给您的默认TextColumn。 应该注意的是,在这种情况下,DataTable是存储过程的结果,在这种情形下不太可能进行编辑。我尝试使用视图和存储函数;第一个也不允许编辑(至少不容易……我怀疑我需要在触发器之前插入,但这是一个数据库问题),而第二个则不会根据动态表生成的一些问题返回表。 |
|
|
10
0
在设计器中重新打开表单,以便自动生成列,然后单击DataGridView,选择“编辑列”,遍历每个有问题的列,并将其“可见”属性设置为False。重新保存并关闭/重新打开表单,以确保它不再发生。这是唯一真正对我有效的非编码解决方案,我不想添加代码来解决winforms设计器的问题。 |