powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Переопределение Text в своем UserControl
21 сообщений из 21, страница 1 из 1
Переопределение Text в своем UserControl
    #34860889
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет коллеги, помогите добрым советом, не дает покоя следующая фигня
есть UserControl с примерно таким кодом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public MyUserControl : UserControl
{          [Browsable(true),Editor(typeof(System.ComponentModel.Design.MultilineStringEditor),typeof(System.Drawing.Design.UITypeEditor))]
        [DefaultValue(""), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]        
        public override string Text
        {
            get
            {
                return textBox.Text;
            }
            set
            {
                textBox.Text = value;
            }
        }
}
все бы ничего, да при кидании данного контрола на форму свойству Text все время присваивается автоматом сгенеренное значение в стиле myUserControl1, что в целом характерно для многих наследников Control но меня не устраивает, хочу чтоб пустым оставалось. Вот как эта фигня обходится например в TextBox не могу никак в рефлекторе нарыть. И своего способа забороть тоже не найду, присваивается это дело после вызова конструктора, где не ясно, стэктрейс тоже ситуации не облегчает, в общем караул, мелочь вроде а никак :-(
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861031
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или я что-то не понял, или одно из двух...
попробовал по всякому, поле userControl11.Text (class UserControl1 : UserControl )всегда пустое... и в конструкторе, и после, и при добавлении на форму...
Научите, как повторить Вашу проблему. :-(

Море излечило меня от Джихада...(с)
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861041
maybeleo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaЭтим занимается, кажется, ControlDesigner.InitializeNewComponent. Как победить - точно не скажу, поглядите в мсдне топик про этот метод, там чего-то сказано на сей счет.
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861045
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Или я что-то не понял, или одно из двух...
попробовал по всякому, поле userControl11.Text (class UserControl1 : UserControl )всегда пустое... и в конструкторе, и после, и при добавлении на форму...
Научите, как повторить Вашу проблему. :-(

Море излечило меня от Джихада...(с)
ты его объявлял как я Browsable(true) ? В этом загвоздка. Когда оно в дизайнере не видно, оно и не ставится. Судя по стектрейсу именно дизайнер устанавливает значение этого поля, а не сам контрол. Но могу ошибаться
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861054
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maybeleo chpashaЭтим занимается, кажется, ControlDesigner.InitializeNewComponent. Как победить - точно не скажу, поглядите в мсдне топик про этот метод, там чего-то сказано на сей счет.Во-во, из стектрейса я тоже самое знание извлек (ну кроме кому принадлежит этот InitializeNewComponent). Сейчас посмотрю, что там пишуть, сенкс.
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861086
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня скомпилилось только с такой строкой атрибутов:
[Browsable(true),Editor(typeof(System.ComponentModel.Design.DesignerCollection),typeof(System.Drawing.Design.UITypeEditor))]
[DefaultValue("")]// , DesignerSerializationVisibility(DesignerSerializationVisibility.Visible) ]


в System.ComponentModel.Design. - у меня нету никакого "мульти"
А DesignerSerializationVisibility - Error 1 Attribute 'DesignerSerializationVisibility' is not valid on this declaration type. It is valid on 'method, property, indexer, field, event' declarations only.

Но тект пустой.
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861096
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня с мультилайн тоже не компилится :)
но текст непустой :)
пробовал побороть, пока не выходит
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861097
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в смысле Text == ""

Это что, различия в студиях?
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861112
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати....
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861116
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
It will look at the default property for the control and, if it is of type string, it will set this property's value to the name of the component

т.е. по логике если над классом DefaultProperty(НеТекст) должно пахать, но не пашет. Пока заборол так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class CustomDesigner : System.Windows.Forms.Design.ControlDesigner
    {
        public override void InitializeNewComponent(System.Collections.IDictionary defaultValues)
        {
            base.InitializeNewComponent(defaultValues);
            this.Control.Text = String.Empty;
        }
    }

на счет что там где не катит :-( без понятия, усе в порядке
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861131
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не дописал выдержку из библии
The ControlDesigner class overrides this method. It will look at the default property for the control and, if it is of type string, it will set this property's value to the name of the component. It only does this if the designer has been configured with this option in the options service

Выделенную строку пока не осмыслил, но это имхо идеальное решение. О идея, сейчас посмотрю на дизайнер TextBox, там красивое решение сто пудов
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861133
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!кстати....
нет, не получилось
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861153
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пипец красиво решение у TextBox - как у меня только универсально через рефлексию, тю

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public override void InitializeNewComponent(IDictionary defaultValues)
{
    base.InitializeNewComponent(defaultValues);
    PropertyDescriptor descriptor = TypeDescriptor.GetProperties(base.Component)["Text"];
    if (((descriptor != null) && (descriptor.PropertyType == typeof(string))) && (!descriptor.IsReadOnly && descriptor.IsBrowsable))
    {
        descriptor.SetValue(base.Component, "");
    }
}
Вот оно и Browsable как раз проверяет, короче все к одному. Не понятно только где можно in the options service сразу указать, чтоб не хулиганил. Ну да ладно, буду считать что решение найдено, Всем спасибо, особенно maybeleo за толчок в нужном направлении
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861159
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. а ведь действительно, если приглядеться, при кидании TextBox на форму видно как в нем появляется и исчезает текст
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861203
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaP.S. а ведь действительно, если приглядеться, при кидании TextBox на форму видно как в нем появляется и исчезает текст

У меня ничего не видно :(

Microsoft Visual Studio 2005
Version 8.0.50727.42 (RTM.050727-4200)
Microsoft .NET Framework
Version 2.0.50727

Installed Edition: Professional
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861234
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129 chpashaP.S. а ведь действительно, если приглядеться, при кидании TextBox на форму видно как в нем появляется и исчезает текст

У меня ничего не видно :(

Microsoft Visual Studio 2005
Version 8.0.50727.42 (RTM.050727-4200)
Microsoft .NET Framework
Version 2.0.50727

Installed Edition: Professionalтакая же точно. от скорости компа зависит, чем быстрей, тем незаметней для глаза, но на моем P4-3,2 при отпускании текстбкса на форму видно, просто внимания раньше не обращал
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861256
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaP.S. а ведь действительно, если приглядеться, при кидании TextBox на форму видно как в нем появляется и исчезает текст
точно, есть. Раньше не замечал. Спасибо за тему. Буду знать.
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861268
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaПипец красиво решение у TextBox - как у меня только универсально через рефлексию, тю

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public override void InitializeNewComponent(IDictionary defaultValues)
{
    base.InitializeNewComponent(defaultValues);
    PropertyDescriptor descriptor = TypeDescriptor.GetProperties(base.Component)["Text"];
    if (((descriptor != null) && (descriptor.PropertyType == typeof(string))) && (!descriptor.IsReadOnly && descriptor.IsBrowsable))
    {
        descriptor.SetValue(base.Component, "");
    }
}
Вот оно и Browsable как раз проверяет, короче все к одному. Не понятно только где можно in the options service сразу указать, чтоб не хулиганил. Ну да ладно, буду считать что решение найдено, Всем спасибо, особенно maybeleo за толчок в нужном направлении


- Если смотреть рефлектором, то эта функция должна быть в System.Windows.Forms.TextBox?
Правильно?
Дайте точный путь, пожалуйста.
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861289
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129 chpashaПипец красиво решение у TextBox - как у меня только универсально через рефлексию, тю

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public override void InitializeNewComponent(IDictionary defaultValues)
{
    base.InitializeNewComponent(defaultValues);
    PropertyDescriptor descriptor = TypeDescriptor.GetProperties(base.Component)["Text"];
    if (((descriptor != null) && (descriptor.PropertyType == typeof(string))) && (!descriptor.IsReadOnly && descriptor.IsBrowsable))
    {
        descriptor.SetValue(base.Component, "");
    }
}
Вот оно и Browsable как раз проверяет, короче все к одному. Не понятно только где можно in the options service сразу указать, чтоб не хулиганил. Ну да ладно, буду считать что решение найдено, Всем спасибо, особенно maybeleo за толчок в нужном направлении


- Если смотреть рефлектором, то эта функция должна быть в System.Windows.Forms.TextBox?
Правильно?
Дайте точный путь, пожалуйста.

нет, это в классе TextBoxBaseDesigner, из System.Windows.Forms.Design, что в сборке System.Design
...
Рейтинг: 0 / 0
Переопределение Text в своем UserControl
    #34861336
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Переопределение Text в своем UserControl
    #38989494
igen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chpasha, Предполагаю, что имелось ввиду это:
Код: c#
1.
2.
3.
4.
public override void InitializeNewComponent(System.Collections.IDictionary defaultValues) {
				base.InitializeNewComponent(defaultValues);
				(this.GetService(typeof(DesignerOptions)) as DesignerOptions).
}



Вот только никакого такого свойства там нет, а есть только те св-ва, что можно увидеть в настройках студии Сервис -> Параметры -> Конструктор Windows Forms.
P.S. Складывается ощущение, что это волшебное св-во когда-то было, но его удалили в более поздних версиях (Студии?), или оно где-то есть, но не документировано?!
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Переопределение Text в своем UserControl
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]