Обе эти проблемы очень странные. Я думаю, что существует либо сторонний элемент управления, либо пользовательский элемент управления, унаследованный от DataGridView, либо ваша установка Visual Studio повреждена.
Я бы порекомендовал взглянуть на файл формы designer.vb, чтобы увидеть, какой тип данных у DataGridView или что-то выглядит не совсем правильно.
Чтобы просмотреть файл designer.vb, выберите Show All Files
в меню Project
, затем разверните соответствующую форму и дважды щелкните файл designer.vb.
Вы также можете попасть в этот файл, щелкнув правой кнопкой мыши ссылку на DataGridView (или любой элемент управления) в коде формы (не дизайнере) и выбрав Go To Definition
; это приведет вас в файл конструктора.
Если этот проект был перенесен из более ранней версии VB.Net, есть вероятность, что элементы формы сохраняются непосредственно в файле кода формы в регионе " Windows Form Designer generated code "
. В этом случае будет работать второй способ получения определения элемента управления, описанный выше, или вы можете просто выполнить поиск имени элемента управления, начиная с верхней части файла.
В любом случае, как только вы получите определение элемента управления, оно должно выглядеть примерно так:
Private Sub InitializeComponent()
Me.DataGridView1 = New System.Windows.Forms.DataGridView
Me.Column1 = New System.Windows.Forms.DataGridViewCheckBoxColumn
Me.Column2 = New System.Windows.Forms.DataGridViewTextBoxColumn
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'DataGridView1
'
Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.DataGridView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.Column1, Me.Column2})
Me.DataGridView1.Location = New System.Drawing.Point(68, 84)
Me.DataGridView1.Name = "DataGridView1"
Me.DataGridView1.Size = New System.Drawing.Size(240, 150)
Me.DataGridView1.TabIndex = 0
'
'Column1
'
Me.Column1.HeaderText = "Column1"
Me.Column1.Name = "Column1"
'
'Column2
'
Me.Column2.HeaderText = "Column2"
Me.Column2.Name = "Column2"
... some additional stuff
Me.Controls.Add(Me.DataGridView1)
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
Friend WithEvents DataGridView1 As System.Windows.Forms.DataGridView
Friend WithEvents Column1 As System.Windows.Forms.DataGridViewCheckBoxColumn
Friend WithEvents Column2 As System.Windows.Forms.DataGridViewTextBoxColumn
Если типы данных отличаются от System.Windows.Forms, проблема заключается в этом компоненте.
Если типы данных одинаковы, вы можете попробовать несколько вещей:
1) Закройте решение и вручную очистите каталоги бинов, чтобы удалить все возможные запутанные ссылки. Затем снова откройте проект.
2) Если 1 не работает, как бы это ни было болезненно, я бы предложил удалить и переустановить visual studio (мне пришлось сделать это вчера для VS2010 из-за странного поведения).