Как Вы предотвращаете столбцы автоматической генерации разработчика Visual Studio в DataGridView?

Вы должны использовать & вместо ? после первого использования. Как это:

<a href="mailto:<?php echo $v['email']; ?>?subject=<?php echo 'subject here'; ?>&body=<?php echo 'your email is approved'; ?>"><i class="icon-envelope"></i></a>
8
задан Brendan 9 February 2009 в 21:55
поделиться

4 ответа

Это кажется на добавление средств управления в конструкторе. Возможно, добавьте столбцы немного позже - возможно, что-то как переопределение OnParentChanged; Вы затем сможете проверить DesignMode таким образом, Вы только добавляете столбцы во время выполнения (не во время дизайна).

5
ответ дан 5 December 2019 в 13:02
поделиться

Я видел это поведение прежде для ComboBox со свойством Items, и это действительно печально. Вот то, как я обошел его с ComboBox. Необходимо смочь применить это к DataGridView.

Я создал "новое" свойство под названием Объекты и установил его, чтобы не быть доступным для просмотра и быть явно быть скрытым от сериализации. Под капотом это просто получает доступ к реальному свойству Items.

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ObjectCollection Items
{
    get { return ((ComboBox)this).Items; }
}

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new object DataSource
{
    get { return ((ComboBox)this).DataSource; }
5
ответ дан 5 December 2019 в 13:02
поделиться

Mark был прав. Разработчик смотрит на конструктора для этого поведения автоматической генерации. Вот то, как я обошел его.

Взял код, который создает/связывает DataTable к DataGridView из конструктора и поместил его в метод.

Используя Load событие на содержании формируется - который содержит несколько DataGridViews звонят BindData() метод на каждом экземпляре,


List<Control> childControls = Misc.Misc.GetAllChildControls(this);
foreach (Control ctrl in childControls) {
    if (ctrl is WorksheetGridView) {
         WorksheetGridView wsgv = ctrl as WorksheetGridView;
         wsgv.BindData();
    }
}

где GetAllChildControls метод в классе помощника


internal static List<Control> GetAllChildControls(Control topControl)
{
    List<Control> ctrlStore = new List<Control>();
    ctrlStore.Add(topControl);
    if (topControl.HasChildren)
    {
        foreach (Control ctrl in topControl.Controls)
        {
            ctrlStore.AddRange(GetAllChildControls(ctrl));                }
        }
    }
    return ctrlStore;
}

Извините, если это явно, но я никогда не хочу забыть, как сделать это!

1
ответ дан 5 December 2019 в 13:02
поделиться

Я часто делаю это в моих пользовательских элементах управления, если Вы переносите код, Вы не хотите выполняться в разработчике в проверке DesignMode, он должен решить Ваши проблемы.

    if (!DesignMode)
    {
        // Your code here
    }
0
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: