2009-09-30 5 views
0

Обычно, когда я добавляю элемент управления в форму с помощью графического интерфейса Visual Studio, он записывает весь код, определяющий элемент управления, в отдельный файл частичного класса с именем «.Designer.CS». Этот частичный класс обычно содержит частные поля для каждого элемента управления, поэтому частичный класс, не являющийся конструктором, может обращаться к элементам управления.Как вы можете получить доступ к DataGridView в форме?

Я добавил DataGridView в GroupBox ** в форму. Однако поле не генерируется для сетки в частичном классе конструктора. Элемент управления создается правильно, но не определено поле, в котором я могу получить доступ к элементу управления из моего кода.

Я попытался изменить файл конструктора, чтобы элемент управления ссылался на частное поле, а не на локальную переменную. Это работает, но я продолжаю пытаться редактировать свойства DataGridView через окно свойств Visual Studio, которое заканчивает удаление этого поля и нарушение моего кода.

Есть ли причина, по которой частное поле не настроено для DataGridViews Visual Studio в частичном классе конструктора формы? Как я могу получить доступ к сетке в противном случае?

ответ

0

Вы наследовали DataGridView и внесли в него некоторые изменения? Форма должна определенно создать ссылку на конструктора, добавленного DGV, хотя и я не уверен, почему этого не произойдет. В любом случае вы никогда не должны вводить какие-либо изменения вручную в классы, созданные разработчиками, поскольку эти изменения будут нарушаться, когда разработчик регенерирует этот класс.

Вы всегда можете добавить DataGridView вручную с помощью кода в GroupBox:

DataGridView DGV = новый DataGridView(); dgv.Dock = DockStyle.Fill;

myGroupBox.Controls.Add (dgv);

+0

также, вы попробовали создать новый UserControl, чтобы добавить DataGridView к нему, а затем добавить этот UserControl в свой GroupBox. – TJF

0

Звучит странно. Как насчет того, что вы снова добавите свой вид datagridview в форму, не изменяя какие-либо его свойства. Он по умолчанию должен быть назван «datagridview1» (при условии, что в форме есть только одно datagridview). Теперь, когда вы возвращаетесь в код, распознает ли intellisense его, когда вы вводите «это»? Если это так, вероятно, это где-то в коде конструктора, но вы просто не видите его. Просто идея.

Смежные вопросы