Возможны ли унаследованные формы и / или унаследованные элементы управления в Managed C ++ - PullRequest
0 голосов
/ 01 апреля 2010

Вопрос на самом деле довольно понятен, но я уточню его. Я строю простое приложение, чтобы показать загрузку [файл] для 5 различных типов [файлов]. Таким образом, все эти 5 форм будут иметь похожие элементы графического интерфейса, такие как список и кнопка загрузки с небольшим текстовым полем / меткой для отображения сводной информации о [файле].

Мой желаемый эффект - это что-то вроде шаблона C # в Visual Studio для элементов управления Inherited User или объектов Inherited. Я уже активно гуглял концепцию, чтобы найти шаблон визуальной студии C ++, но не смог его найти.

Слово [файл] заключено в квадратные скобки, потому что диалог открытых файлов не поможет, так как этот список файлов для выбора формы приходит с сервера SQL.

Большое спасибо!

Для дальнейшего объяснения моего желания:

Class A : public System::Windows::Forms::Form
{
  //normal windows forms generated code here and your stuff
}
Class B : public A
{
  //You cannot edit this content with designer as designer denies you that chance
}

Так что мне интересно, могу ли я использовать конструктор для редактирования этого класса? Я подумал, смогу ли я заставить дизайнера не читать объявление класса, а видеть что-то вроде этого

#if designer
Class B : public System::Windows::Forms::Form
#else
Class B : public A
#endif
{

}

Я ищу что-то, чтобы сделать это, где я мог бы использовать дизайнер в Унаследованной форме и Базовой форме. Это вообще возможно.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2010

Кажется, невозможно использовать конструктор на унаследованных формах и элементах управления. Конструктор для C ++ / CLI не поддерживает / не работает с унаследованными формами и элементами управления. Не удалось найти шаблоны для такого процесса. Я буду отмечать предыдущий ответ, так как это также правильный путь к этому и ответит на большую часть моего вопроса. Увы, не будет дизайнерской поддержки для этих форм.

0 голосов
/ 01 апреля 2010

Да, нет проблем. C ++ / CLI поддерживает наследование так же, как и любой другой управляемый язык. Чего не хватает, так это поддержки IDE «укажи и щелкни». Добавьте базовую форму в свой проект, измените объявление производной формы. Например:

#pragma once
#include "BaseForm.h"
...
public ref class Form1 : public BaseForm         // <== NOTE: new base class
{
  // etc...
}
...