DataGridView обеспечивает согласованность приложений - PullRequest
0 голосов
/ 19 мая 2009

В нашем приложении у нас будет несколько диалоговых окон поиска. Пользовательский интерфейс диалогового окна поиска прост (текстовое поле, результат просмотра данных, кнопка «ОК», кнопка «Отмена»). Единственное реальное изменение между различными диалогами - это некоторый текст метки и источник привязки к сетке. Мы хотим применить определенные свойства (например, выбор полной строки и режим только для чтения) и события (например, щелчок и двойной щелчок), чтобы, когда кто-то хочет добавить диалоговое окно, мы знали, что пользователь получит согласованное поведение, поскольку этот диалог реализует то же самое свойства и события, которые реализует любой другой диалог в нашем приложении.

Я создал базовую форму поиска, которая содержит некоторые свойства и кнопки ok / cancel + их события щелчка. Я застрял на datagridview. Каков наилучший подход для обеспечения того, чтобы все представления данных имели одинаковые характеристики в одном из наших диалоговых окон поиска?

Ответы [ 2 ]

2 голосов
/ 19 мая 2009

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

0 голосов
/ 20 мая 2009

Сегодня я реализовал пользовательскую сетку (DataGridViewFinder), которая происходит от DataGridView. Эта сетка относится только к нашим диалогам поиска. Сетка имеет свойства по умолчанию, установленные так, чтобы она соответствовала всем остальным сеткам поиска. Кроме того, поскольку я знаю, что этот тип сетки будет только в диалоге поиска, я переопределил некоторые события, которые будут устанавливать свойства и вызывать методы базового поиска.

Мне нравится этот подход, потому что он гарантирует, что когда я опускаю свою пользовательскую сетку в диалоге поиска, определенные свойства и события уже обрабатываются для меня. Будет много диалогов поиска, и я подозреваю, что это сэкономит много времени. Кто-нибудь видит что-то не так с этой реализацией?

protected override void OnEnter(EventArgs e)
{
    base.OnEnter(e);
    if (Parent is BaseFinder)
    {
        (Parent as BaseFinder).Mode = FinderMode.Ok;
    }
}

protected override void OnDoubleClick(EventArgs e)
{
    base.OnDoubleClick(e);
    if (Parent is BaseFinder)
    {
        (Parent as BaseFinder).btOk_Click(this, e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...