Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 96
1

UserControl в панели элементов VisualStudio

19.08.2022, 10:58. Показов 861. Ответов 8

Author24 — интернет-сервис помощи студентам
Скажите, кто знает, я правильно понял, что для того чтобы контрол можно было накинуть на форму прямо из панельки, у него обязательно должен быть конструктор без параметров?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2022, 10:58
Ответы с готовыми решениями:

VisualStudio зависает при перетаскивании UserControl на форму
Всем привет! Создал Веб-узел. В проекте перетаскиваю созданный пользовательский элемент на форму...

Поместить UserControl в центре панели
Как поместить UserControl в центре панели, чтобы небыло сдвига Добавлено через 14 минут...

Как разместить UserControl на панели
Всем привет.У меня вот такая проблема, есть dll в которой размещены два класс TextBoxOverried и...

UserControl его не видно на панели инструментов
Всем привет. Я создал UserControl1. Но его не видно в панели управления. Раньше при создании они...

Не удалось загрузить элемент панели элементов. Он будет удален из панели элементов
Столкнулся с такой проблемой при добавлении своего пользовательского элемента. Хоть целевая...

8
2808 / 1677 / 885
Регистрация: 14.04.2015
Сообщений: 5,721
19.08.2022, 11:28 2
LexMcLinn, нет. но без строки InitializeComponent(); не будет и элементов этого контрола
0
2327 / 1816 / 751
Регистрация: 27.07.2012
Сообщений: 5,359
19.08.2022, 12:53 3
Цитата Сообщение от LexMcLinn Посмотреть сообщение
Скажите, кто знает, я правильно понял, что для того чтобы контрол можно было накинуть на форму прямо из панельки, у него обязательно должен быть конструктор без параметров?
В общем случае для контролов, добавленных через конструктор форм, а не в коде, дизайнер студии генерирует что-то в духе:
C#
1
2
3
4
5
6
7
    private UserControl userControl1;
    //...
    private void InitializeComponent()
    {
        userControl1 = new UserControl(); // без параметров
        // ...
    }
Поэтому ему нужен конструктор без параметров. Но в дальнейшем можно руками поправить этот код, добавив параметры в вызов конструктора, и, по идее, всё должно быть нормально. Хотя править вручную InitializeComponent не рекомендуется, так как этот кусок кода генерируется конструктором форм, и нет гарантии что ваши изменения однажды не потеряются.
0
2808 / 1677 / 885
Регистрация: 14.04.2015
Сообщений: 5,721
19.08.2022, 12:58 4
John Prick, это относится к данному вопросу?
Цитата Сообщение от LexMcLinn Посмотреть сообщение
прямо из панельки
подразумевается, что он создан, как новый элемент, и после сборки отображается в списке на панели элементов, откуда можно вытянуть на форму его
0
2327 / 1816 / 751
Регистрация: 27.07.2012
Сообщений: 5,359
19.08.2022, 13:05 5
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
подразумевается, что он создан, как новый элемент, и после сборки отображается в списке на панели элементов, откуда можно вытянуть на форму его
Да я понял это. Вот когда он на форму его перетянет, студия сгенерирует код с вызовом конструктора без параметров. Хотя, возможно, если у элемента не будет такого конструктора, он и не отобразится в списке доступных элементов.
0
2808 / 1677 / 885
Регистрация: 14.04.2015
Сообщений: 5,721
19.08.2022, 13:09 6
John Prick, я просто проверил за ТС (не понимаю, почему он сам этого не сделал). создал UC, в нем уже есть конструктор, который вызывает метод InitializeComponent(). если я удалю конструктор из UC, то после сборки он будет отображаться, но после вытягивания его на форму на нем никаких элементов не будет.
0
2327 / 1816 / 751
Регистрация: 27.07.2012
Сообщений: 5,359
19.08.2022, 13:17 7
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
создал UC, в нем уже есть конструктор, который вызывает метод InitializeComponent(). если я удалю конструктор из UC, то после сборки он будет отображатьс
Хех. Так если просто удалить конструктор, то он на самом деле останется, так как по умолчанию, при отсутствии других констукторов, у класса всегда есть конструктор без параметров. Надо было для проверки добавить в конструктор какой-нибудь параметр.
0
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 96
27.08.2022, 16:22  [ТС] 8
В общем если с UC с параметрами у меня была возможность добавлять его на формы программно (что я и делал), то с вот этой простенькой кнопочкой ниже -- как-то не хочется программно её controls.add, слишком много мороки.
А тем временем конструктор есть и без параметрев:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 public partial class UCRegButton : UserControl
    {
        private SearchType searchT;
 
        public UCRegButton()
        {
            InitializeComponent();
            SearchT = SearchType.Contains;
        }
 
        public SearchType SearchT { get => searchT; set => searchT = value; }
 
        private void button_Click(object sender, EventArgs e)
        {
            if (SearchT == SearchType.Contains) SearchT = SearchType.Exact;
            if (SearchT == SearchType.Exact) SearchT = SearchType.Contains;
        }
    }
 
    public enum SearchType
    {
        Contains,  //%%
        Exact       // ==
    }
И она тоже не перекидывается с панели элементов в конструктор...
0
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 96
28.08.2022, 11:30  [ТС] 9
Цитата Сообщение от John Prick Посмотреть сообщение
Да я понял это. Вот когда он на форму его перетянет, студия сгенерирует код с вызовом конструктора без параметров. Хотя, возможно, если у элемента не будет такого конструктора, он и не отобразится в списке доступных элементов.
Он без конструктора () средой подгружается в список элементов в панель, но при попытке добавить -- всплывает сообщение, что не получилось добавить элемент и мы его из панели уберём. И убирает из панели. При следующей загрузке среды все UControls опять на месте.
0
28.08.2022, 11:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2022, 11:30
Помогаю со студенческими работами здесь

Как на странице с UserControl поймать что нажато в самом UserControl
Есть страница (MyPage.aspx). На ней UserControl (menu.asax). А в нем кнопки (btn1, btn2...). Одну...

MVVM - Как в UserControl передавать данные с другого UserControl
Получаем данные в UserControl1 и при переключении на другой UC2 нужно передать определённые данные...

Кастомная кнопка в UserControl или UserControl со свойствами кнопки
Привет, пытаюсь запихнуть кастомную кнопку в Useк Control. Что-то ерунда какая-то получается. ...

Смена userControl по нажатию на кнопку в другом userControl
Помогите пожалуйста, как реализовать смену userControl в основном окне программы по нажатию на...

Как разместить UserControl поверх другого UserControl
Такая задача. Есть форма. На ней размещена панель panelRight. Также есть два пользовательских...

Масштабирование элементов в UserControl
Привет всем! В моей программе есть пользовательский элемент управления UserControl. На этот...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru