Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420

Наследование от формы с параметрами

01.10.2019, 09:25. Показов 4333. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
У меня есть необходимость иногда выдавать диалоговые формы в приложении. Так как формы эти обычно небольшие, а вид должен быть один, то я создал себе вот такой вспомогательный класс:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class PopupForm : Form
    {
        public PopupForm ( int width, int height )
            : base ( )
        {
            this.BackColor = SystemColors.Menu;
            this.ForeColor = Utils.MainColor;
            this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
            this.ControlBox = false;
            this.ShowInTaskbar = false;
            this.Width = width;
            this.Height = height;
            this.StartPosition = FormStartPosition.CenterScreen;
        }
    }
И если мне надо сделать форму, то просто:

C#
1
2
3
4
5
6
Form fTest = new PopupForm ( 248, 260 );
            Label lbSelectM = new Label ( );
            lbSelectM.Text = "Тестовый текст";
//Описание ещё пары элементов их добавление на форму и подписка на событие клика
 
fTest.ShowDialog ( );
Проблема вот в чём: на одной из таких диалоговых форм должно быть много элементов специфичного вида (задаю много свойств), а выдавать это окно надо далеко не в одном месте, потому стену кода пришлось бы копировать много раз. Логичным кажется просто создать полноценную форму на этот случай и унаследовать её от PopupForm, но при попытке это сделать студия ругается, что нет конструктора с нулём аргументов.

C#
1
2
3
4
5
6
7
8
public partial class Form1 : PopupForm
    {
        public Form1 ( ) //...not contain a constructor that takes 0 arguments...
 
        {
            InitializeComponent ( );
        }
}
Если я их пропишу, ситуацию это не меняет. Как быть?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.10.2019, 09:25
Ответы с готовыми решениями:

Наследование и конструктор с параметрами
Добрый вечер! При разработке программы столкнулся с проблемой. По условию нужно использовать конструкторы с параметрами и в конечном итоге...

Наследование конструкторов с параметрами и деструктора
Данно два класс. Родитель: class entity { private: int ID = 0; class object_list * list_; protected: std::string...

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

4
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.10.2019, 09:55
Лучший ответ Сообщение было отмечено FaceHoof как решение

Решение

Цитата Сообщение от FaceHoof Посмотреть сообщение
Как быть?
Передавать прописанные параметры в базовый конструктор:
C#
1
2
3
4
5
6
7
8
9
10
11
public partial class Form1 : PopupForm
    {
        public Form1(int w, int h) : base(w, h)
        {
            InitializeComponent ( );
        }
 
        public Form1() : this(800, 600)
        {
        }
}
1
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,099
01.10.2019, 10:00
C#
1
2
3
4
5
6
7
8
public partial class Form1 : PopupForm
    {
        public Form1 ( int width, int height) :base (width, height)//...not contain a constructor that takes 0 arguments...
 
        {
            InitializeComponent ( );
        }
}
или
C#
1
2
3
4
5
6
7
8
public partial class Form1 : PopupForm
    {
        public Form1 () :base (300, 200)//...not contain a constructor that takes 0 arguments...
 
        {
            InitializeComponent ( );
        }
}
1
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
01.10.2019, 15:22  [ТС]
kolorotur, всё работает прекрасно, но есть странность: при попытке просмотреть дизайнер формы у меня выходит страница ошибки с текстом "Constructor on type 'MyProject.PopupForm' not found. " Однако наследование прекрасно работает, значит PopupForm прекрасно находится. Не то чтобы мне было сильно нужно смотреть на дизайнер, я всё кодом написал, но мне это совершенно непонятно.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.10.2019, 15:28
Цитата Сообщение от FaceHoof Посмотреть сообщение
мне это совершенно непонятно
Для отрисовки формы дизайнер создает ее экземпляр, используя конструктор по умолчанию.
Поскольку в классе PopupForm такого конструктора нет, постольку и возникает исключение.

Если нужно отображать форму в дизайнере, но без предоставления дефолтного конструктора, то сделайте его закрытым:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class PopupForm : Form
    {
        public PopupForm ( int width, int height )
            : base ( )
        {
            this.BackColor = SystemColors.Menu;
            this.ForeColor = Utils.MainColor;
            this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
            this.ControlBox = false;
            this.ShowInTaskbar = false;
            this.Width = width;
            this.Height = height;
            this.StartPosition = FormStartPosition.CenterScreen;
        }
 
        private PopupForm() : this(300, 400)
        {
        }
    }
Дизайнер его найдет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.10.2019, 15:28
Помогаю со студенческими работами здесь

Action у формы с параметрами
<form action="http://test/index.php?get=1" method="get"> <input type="submit" value="send" name="submit"> </form> После...

Создание формы C "параметрами"
Всех с прошедшими ;) Возник вот такой вопрос, можно ли как нибудь определить из какой вьюшки создан документ, что бы автоматом заполнить...

Запрос с параметрами из формы
На форме есть 2 выпадающих списка: один с названиями полей, другой со значениями выбранного поля и простой список, который показывает какие...

7.7 Открытие формы отчета с параметрами
Добрый день! Подскажите, пожалуйста, как определить, какое значение передается в "Форма.Параметр"? У меня в одном случае это...

Обработка формы скриптом с get параметрами
Есть страница index.php?a=1&b=2. На этой странице расположена форма, которая должна отправить get запросом данные формы на этот скрипт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru