我有一个绑定到业务对象列表的DataGridView:
Dim template As New IncidentTemplate Dim temps As List(Of IncidentTemplate) = template.LoadAll Dim bs As New BindingSource If Not temps Is nothing Then bs.DataSource = temps Me.dgvTemplates.DataSource = bs End If
Dim BtnCol As New DataGridViewButtonColumn With BtnCol .Name = "Edit" .Text = "Edit" .HeaderText = String.Empty .ToolTipText = "Edit this Template" .UseColumnTextForButtonValue = True End With .Columns.Add(BtnCol) BtnCol = nothing For Each col As DataGridViewColumn In Me.dgvTemplates.Columns Select Case col.Name Case "Name" col.displayIndex = 0 col.FillWeight = 100 col.Visible = True Case "Description" col.displayIndex = 1 col.FillWeight = 100 col.Visible = True Case "Created" col.displayIndex = 3 col.HeaderText = "Created On" col.DefaultCellStyle.Format = "d" col.FillWeight = 75 col.Visible = True Case "CreatedBy" col.displayIndex = 2 col.HeaderText = "Created By" col.FillWeight = 75 col.Visible = True Case "Edit" col.displayIndex = 4 col.HeaderText = "" col.FillWeight = 30 col.Visible = True Case Else col.Visible = False End Select Next
这似乎工作得相当好,除了我做的事情,按钮列(编辑)总是显示在其他列的中间而不是在结尾.我已经尝试了DGV.Columns.Add和DGV.Columns.Insert以及设置列的displayIndex(这适用于所有其他列)但我无法使按钮列显示在正确的位置.我也尝试在设置其余列之前和之后添加按钮列,但这似乎没有区别任何人都可以建议我做错了什么?这让我疯狂….
我在寻找解决类似问题时偶然发现了你的帖子.我最后通过你提到(使用displayIndex属性)并将DataGridView的AutoGenerateColumns属性设置为false来跟踪它.此属性在设计器中不可见,因此我将其添加到表单的构造函数中.在为网格设置数据源之前,请务必执行此操作.
希望这可以帮助…
原文地址:https://www.jb51.cc/vb/255599.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。