Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Konstantin81
20 / 20 / 5
Регистрация: 05.10.2011
Сообщений: 54
#1

Наследование tablelayoutpanel и сохранение доступности свойств компонентов, расположенных на ней

27.06.2012, 22:39. Просмотров 717. Ответов 2
Метки нет (Все метки)

Добрый день!

Есть Form1 на ней protected textbox1 и protected tablelayout1
Есть Form2 :Form1 (наследуется от Form1)

Если textbox1 размещен tablelayout1, то на Form2 доступны его свойства и события.

Если textbox1 разместить в tablelayout1, то все его свойства и события становятся неактивными

Если я руками добаляю код
C#
1
2
3
4
 private void InitializeComponent()
        {
 this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
}
и
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 public partial class Form2 : Form1
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            MessageBox.Show("2");
        }
 
      
    }
То в режиме конструктора формы -ошибка
Событие TextChanged доступно только для чтения и не может быть изменено.
в System.ComponentModel.Design.EventBindingService.EventPropertyDescriptor.SetValue(Object component, Object value)
в System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeAttachEventStatement(IDesignerSerializationM anager manager, CodeAttachEventStatement statement)
в System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)

При этом событие нормально отрабатывается. Вопрос такой, как правильнее организовать наследование формы с контролами внутри tablelayout?

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2012, 22:39
Ответы с готовыми решениями:

Несовместимость по доступности: доступность типа параметра ниже доступности метода
Всем привет! Делаю задание на тему наследия классов. Есть класс «Поликлиника»....

Как работать с приведениями типов свойств компонентов
почему выдает ошибку на MessageBox.Show(typeof dateTimePicker1.Value); или...

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

Сохранение настроек свойств формы
Приветствую, уважаемые форумчане. Пытаюсь реализовать следующий функционал:...

Создание 6 компонентов по центру с учетом их visible свойств на tableLayoutPanel
Собственно вопрос как создать 6 штук компонентов на tableLayoutPanel так чтобы...

2
Alex_Sabaka
628 / 489 / 77
Регистрация: 28.07.2010
Сообщений: 895
Завершенные тесты: 3
27.06.2012, 22:45 #2
Если я вас правильно понял, то вам нужно пометить все контролы формы как public или protected
0
Konstantin81
20 / 20 / 5
Регистрация: 05.10.2011
Сообщений: 54
27.06.2012, 23:37  [ТС] #3
Цитата Сообщение от Alex Sabaka Посмотреть сообщение
Если я вас правильно понял, то вам нужно пометить все контролы формы как public или protected
В том то и дело, свойства и события недоступны.

Если textbox просто перетащить из tablelayout на форму - все работает нормально

Если в tablelayout пометить panel а в panel textbox -> то все ок.

Это такая фича tablelayout?

Как кастыль - объявляю событие text changed в род. форме как как virtual и override его в дочерней

пример

В Form2.Designer.cs

руками добавил событие
C#
1
this.textBox1.TextChanged+=new System.EventHandler(textBox1_TextChanged);
по двойному клику на textBox1 эта строка автоматически не добавляется

Вопрос, почему конструктор Form2 показывает ошибку, но все работает корректно?

Добавлено через 14 минут
Прошу прощения, но ссылка не работает.
http://pharmaprofi.ru/DemoGluki.zip

Добавлено через 15 минут
Нашел причину:
The reason why you cant edit your TableLayoutPanel in the derived class is because you are attempting to use a feature of WinForms called 'visual inheritance'. Unfortunately, the TableLayoutPanel does not support visual inheritance:

http://msdn.microsoft.com/en-us/library/ms171689.aspx (read at the bottom of the page) http://msdn.microsoft.com/en-us/library/1z3efhd2.aspx
т.е. фича tablelayout
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2012, 23:37

Наследование свойств компонентов
возник небольшой вопросик (чистое любопытство) такого плана: допустим возьмём...

Сохранение свойств компонентов после закрытия программы
Помогите не могу разобраться( На поле есть label1.text = 100 После нажатия...

Наследование свойств
Хотелось бы описать 1 функцию в базовом классе типа: void func(){ procedure( a...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru