Datagridview在init上出现奇怪的显示错误

时间:2016-02-25 09:16:55

标签: vb.net winforms datagridview

初始化我的UI后,我得到以下关于datagridview绘图的非常奇怪的行为: enter image description here

基本上,期望第一行标题和列标题(我没有包含在图片中)看起来像DGV打印屏幕上的内容"背后"他的申请 这到底是什么,有没有人知道修复它的方法?

容器代码:

Public Class DGVControl
    Dim dt As DataTable
    Public Sub init()
        dt = New DataTable
        Dim arr(ldfAttributes.Count - 1) As String

        Dim cms As New ContextMenuStrip

        Dim i As Integer = 0
        For Each att As String In Attributes.Keys
            Dim cmsitem As New ToolStripMenuItem
            dt.Columns.Add(att, GetType(String))
            cmsitem.Name = att
            cmsitem.Text = att
            cmsitem.Owner = cms
            cmsitem.CheckOnClick = True
            cmsitem.Checked = my.Settings.shownColumns.Contains(att)
            AddHandler cmsitem.CheckedChanged, AddressOf showOrHideColumn
            cms.Items.Add(cmsitem)
            arr(i) = "No Data"
            i += 1
        Next

        For i = 1 To my.settings.anzEntries
            dt.Rows.Add(arr)
        Next
        MainDGV.DataSource = dt
        MainDGV.ContextMenuStrip = cms
        For Each attName as String In Attributes.key
            showOrHideColumn(cms.Items(attName), New EventArgs())
        Next

        MainDGV.RowHeadersWidth = 90
        MainDGV.RowTemplate.Height = 40

        MainDGV.RowHeadersDefaultCellStyle.BackColor = Color.White
        MainDGV.RowHeadersDefaultCellStyle.Font = New Font(MainDGV.ColumnHeadersDefaultCellStyle.Font, FontStyle.Bold)
        MainDGV.ColumnHeadersDefaultCellStyle.BackColor = Color.White
        MainDGV.ColumnHeadersDefaultCellStyle.Font = New Font(MainDGV.ColumnHeadersDefaultCellStyle.Font, FontStyle.Bold)

        MainDGV.BackgroundColor = Color.White
    End Sub

    Private Sub showOrHideColumn(sender As Object, e As EventArgs)
        Dim cmsitem As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
        MainDGV.Columns(cmsitem.Name).Visible = cmsitem.Checked
    End Sub
    'taken from: http://stackoverflow.com/questions/710064/adding-text-to-datagridview-row-header
    Private Sub nameRowHeaders(sender As Object, e As EventArgs) Handles MainDGV.DataBindingComplete
        Dim dgv As DataGridView = CType(sender, DataGridView)
        For i As Integer = 0 To dgv.RowCount - 1
            dgv.Rows(i).HeaderCell.Value = ("Entry " &(i+1).toString())
        Next
    End Sub



End Class

编辑: 只要您选择一行,所有单元格都将以正确的方式显示,直到您重新启动应用程序

0 个答案:

没有答案