Редактор-редактор DataSource свойство DataGridView в UserControl - PullRequest
2 голосов
/ 15 сентября 2010

У меня есть пользовательский элемент управления UserControl, который содержит несколько дочерних элементов управления, среди которых DataGridView.Я не хочу, чтобы EnableDesignMode для любого из дочерних элементов управления, но вместо этого выставил и сериализовал их свойства по мере необходимости.Я застрял в DataSridView свойство DataSource.

Нужно ли мне сделать пользовательский UITypeEditor и использовать отражение, чтобы найти все объекты BindingSource в родительской форме для выбора, или я могу как-то вызвать встроенный редакторэтот тип?Какой тип вызывается редактором при изменении источника данных DataGridView?

РЕДАКТИРОВАТЬ: На самом деле, предложение от Оливера не совсем сработало.Я получил список привязываемых объектов в сетке свойств, когда выбираю свой UserControl и после того, как я выбрал источник привязки, столбцы связанного набора данных появились в сетке, но столбцы datagridview не сериализуются в designer.cs после редактирования коллекции Columns,Тем не менее, если я создаю пользовательский ParentControlDesigner и EnableDesignMode для этого datagridview, я могу установить привязку через его DesignerVerb, а затем коллекцию Columns сериализовать после редактирования.

Я таким образом раскрыл свойства Columns и DataSource datagridview

[Editor(typeof(CollectionEditor), typeof(UITypeEditor))]
[Category("Grid")]
//[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public DataGridViewColumnCollection Columns
{
    get { return dgvListaBaza.Columns; }
}

[AttributeProvider(typeof(IListSource))]
[Browsable(true)]
[Category("Grid")]
public object DataSource
{
    get { return dgvList.DataSource; }
    set { dgvList.DataSource = value; }
}

В чем разница между настройкой DataSource, когда я щелкаю на собственной дизайнерской глаголе элемента управления и через свойство through?Оба показывают столбцы bindingSource в сетке после того, как я выбрал привязку, но в последнем случае столбцы не сериализуются, как будто есть что-то еще, что мне нужно установить при установке DataSource.

Кроме того, атрибут DesignerSerializationVisibility на открытых столбцах не имеет значения, а имена столбцов в CollectionEditor различаются в зависимости от того, как я устанавливаю DataSource (если он установлен через nativeververb, то они называются SomeColumnDataGridViewTextBoxColumn, иесли это установлено через свойство, то свойство Name каждого столбца будет пустым).

1 Ответ

1 голос
/ 15 сентября 2010
...