Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
19 / 13 / 6
Регистрация: 29.08.2015
Сообщений: 115
1
.NET 3.x

Шаблонное наследование или как наследоваться от <T>?

09.12.2018, 22:56. Показов 1683. Ответов 2

Author24 — интернет-сервис помощи студентам
Хочу всем стандартным контролам прикрутить дополнительные плюшки, вроде всплывающих подсказок, текст которых можно задавать им через свойства, и подобное. Для TextBox сделал это так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class TextBox : System.Windows.Forms.TextBox
    {
        private System.Windows.Forms.ToolTip ToolTip = new System.Windows.Forms.ToolTip();
        private string _ToolTipText;
 
        public string ToolTipText
        {
            get
            {
                return _ToolTipText;
            }
            set
            {
                _ToolTipText = value;
                ToolTip.SetToolTip(this, value);
            }
        }
    }
А после просто заменил при объявлении System.WindowsForms на пространство имен, где они описаны.
Но делать так для всех элементов не особо разумно, как мне кажется. Есть ли способ сделать что-то вроде
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyControl: <T>
    {
        private System.Windows.Forms.ToolTip ToolTip = new System.Windows.Forms.ToolTip();
        private string _ToolTipText;
 
        public string ToolTipText
        {
            get
            {
                return _ToolTipText;
            }
            set
            {
                _ToolTipText = value;
                ToolTip.SetToolTip(this, value);
            }
        }
    }
, чтобы потом делать MyControl<TextBox> textBox1;? Или может есть еще какие-то адекватные способы решения такой задачи?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2018, 22:56
Ответы с готовыми решениями:

Шаблонное наследование
Это не вопрос, просто выражение удивления у дилетанта. Я крайне удивился, когда такое...

Шаблонное наследование
#include &quot;stackcalculator.h&quot; #include &lt;cstring&gt; #include &quot;stack.h&quot; #include &quot;pointerstack.h&quot; ...

Наследоваться или добавить в друзья
Приветствую всех. Есть класс, объект которого будет возвращаться функцией другого класса. В первом...

Как наследоваться от класса TIniFile?
class TFile : public TIniFile { void _fastcall SaveToFile(UnicodeString Path, TFL *L); void...

2
Эксперт .NET
6510 / 4086 / 1606
Регистрация: 09.05.2015
Сообщений: 9,553
09.12.2018, 23:47 2
Множественного наследования классов C# нет, а через generic'и вы такое врядли сделаете.

По идее можно сделать через Extension Method...

Для теста кидаете на форму 1 Tooltip, 1 Button и 3 Label'а

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            label1.SetTooltip(toolTip1, "tt1");
            label2.SetTooltip(toolTip1, "tt2");
            label3.SetTooltip(toolTip1, "tt3");
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(label1.GetTooltip(toolTip1));
            MessageBox.Show(label2.GetTooltip(toolTip1));
            MessageBox.Show(label3.GetTooltip(toolTip1));
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
    public static class ControlExtensions
    {
        public static void SetTooltip(this Control control, ToolTip tooltip, string text)
        {
            tooltip.SetToolTip(control, text);
        }
 
        public static string GetTooltip(this Control control, ToolTip tooltip)
        {
            return tooltip.GetToolTip(control);
        }
    }
0
Эксперт .NET
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,220
10.12.2018, 09:17 3
Цитата Сообщение от Jluc Посмотреть сообщение
Но делать так для всех элементов не особо разумно, как мне кажется
Совершенно верно.
В винформах уже есть компонент для того, что вам хочется сделать — он называется ToolTip.
В дизайнере формы найдите его в категории Common Controls и бросьте на форму — после этого на всех элементах управления в дизайнере появится новое свойство: ToolTip on <ИмяВашегоТултипа>.
Если тултипы надо устанавливать программно, то достаточно вызвать SetToolTip, передавая в него нужный элемент управления:
C#
1
MyToolTip.SetToolTip(MyTextBox, "Karamba!");
При этом достаточно одного компонента ToolTip на всю форму и нет необходимости в наследовании.
0
10.12.2018, 09:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2018, 09:17
Помогаю со студенческими работами здесь

Как правильно наследоваться от CActiveRecord в Yii?
Добрый день, Есть таблица ActiveRecord, производная от CActiveRecord. От первой я унаследовал...

Как наследоваться от виджетов, нарисованных в QtDesigner?
Привет! Вот нарисовал я на CentralWidget (ну главный виджет формы) какой - то фрейм, как теперь...

Как правильно наследоваться с вложенным классом?
Приветствую. Есть класс, точнее 2. Один вложен в другой. class MatreshkaArray { ...

как отменить каскадирование или наследование
Привет! Создал плагин для вордпресс и вывожу таблицу через шорткод в клиентской части, к таблице...


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

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