Дизайнер WindowsForms и GenericForm - PullRequest
       13

Дизайнер WindowsForms и GenericForm

2 голосов
/ 24 ноября 2008

Почему дизайнер не работает, если вы наследуете от собственной письменной обобщенной формы?

Предположим, у меня есть следующая обобщенная форма

public class GenericForm<T> : System.Windows.Forms.Form
{
    public T Test
    {
        get;
        set;
    }
}

Когда я прихожу к конструктору, я получаю ошибки.

Единственный обходной путь, который я создал, - это использование директив компилятора.

#if DESIGN    
    public partial class Form1 : System.Windows.Forms.Form
#else
    public partial class Form1 : GenericForm<string>
#endif

    {
        public Form1()
        {
            InitializeComponent();
        }
    }

Ответы [ 2 ]

2 голосов
/ 25 ноября 2008

Я полагаю, это потому, что дизайнер пытается создать экземпляр формы (или UserControl), чтобы разместить ее в конструкторе. Если у вас есть общая (или абстрактная) форма, разработчик не может создать ее экземпляр.

2 голосов
/ 24 ноября 2008

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

Тем не менее, я столкнулся с этой конкретной проблемой, за исключением применения к пользовательскому элементу управления. Решение, которое я придумал (что опять-таки довольно забавно, но по-другому), состоит в том, чтобы извлечь конкретный класс из универсального. В вашем случае вы бы сделали:

public class StringForm : GenericForm<string>

После этого вы сможете без проблем использовать StringForm в конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...