powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Свойства своего контрола
18 сообщений из 18, страница 1 из 1
Свойства своего контрола
    #37998196
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Пытаюсь сделать свой контрол, состоящий из Label и TextBox (надпись над текстбоксом). Хочу, что бы из палитры свойств напрямую можно было менять надпись (свойство Text у Label) и содержимое TextBox (свойство Lines).

Делаю так:
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
    public class labeledTextBox : UserControl
    {
        ...
        private System.Windows.Forms.Label _label;
        private System.Windows.Forms.TextBox _textBox;

        [Browsable(true)]
        public override string Text
        {
            get { return this._label.Text; }
            set { this._label.Text = value; }
        }

        [Browsable(true)]
        public string[] Lines
        {
            get { return this._textBox.Lines; }
            set { this._textBox.Lines = value; }
        }

        public labeledTextBox()
        {
            this._label = new System.Windows.Forms.Label();
            this._textBox = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // label1
            // 
            this._label.AutoSize = true;
            this._label.Location = new System.Drawing.Point(0, 0);
            this._label.Name = "label1";
            this._label.Size = new System.Drawing.Size(35, 13);
            this._label.TabIndex = 0;
            this._label.Text = "label1";
            // 
            // textBox1
            // 
            this._textBox.Location = new System.Drawing.Point(0, 16);
            this._textBox.Name = "textBox1";
            this._textBox.Size = new System.Drawing.Size(100, 20);
            this._textBox.TabIndex = 1;
            // 
            // UserControl1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Controls.Add(this._textBox);
            this.Controls.Add(this._label);
            this.Name = "UserControl1";
            this.Size = new System.Drawing.Size(109, 40);
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        ...
    }



С Lines все отлично, меняется, в отладке все хорошо. Но с Text какая-то фигня. Устанавливаю из палитры свойств, в дизайнере все меняется, а вот при запуске на отладку - становится пустым (и в дизайнере и в запущенном приложении).

Что это и как победить?

ЗЫ: Сильно не пинайте - новичек в C#
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998400
is_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А свойство TextBox
Код: c#
1.
            this.textBox1.Multiline = true;


пробовали установить?
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998407
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
is_me,

с TextBox все в порядке, проблема в Label.Text
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998413
is_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да и свойство Text у TextBox принимает string ....
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998422
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот и спрашиваю, как быть?
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998428
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вроде в реализации свойства я показал что откуда брать, но не работает

Код: c#
1.
2.
3.
4.
5.
        public override string Text
        {
            get { return this._label.Text; }
            set { this._label.Text = value; }
        }
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998439
is_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, вононоче...

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
namespace WindowsFormsApplication12
{
    partial class UserControl2
    {
        /// <summary> 
        /// Требуется переменная конструктора.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary> 
        /// Освободить все используемые ресурсы.
        /// </summary>
        /// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Код, автоматически созданный конструктором компонентов

        /// <summary> 
        /// Обязательный метод для поддержки конструктора - не изменяйте 
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(20, 23);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(35, 13);
            this.label1.TabIndex = 0;
            this.label1.Text = "label1";
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(23, 39);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(100, 20);
            this.textBox1.TabIndex = 1;
            // 
            // UserControl2
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.label1);
            this.Name = "UserControl2";
            this.Size = new System.Drawing.Size(172, 83);
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox textBox1;
    }
}




---------------------------------------------
---------------------------------------------


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
namespace WindowsFormsApplication12
{
    public partial class UserControl2 : UserControl
    {
        public UserControl2()
        {
            InitializeComponent();
        }
        public string LabelTextProperty
        {
            set
            {
                label1.Text = value;
            }
            get
            {
                return label1.Text;
            }
        }
    }
}



Пробовал, работает все ...
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998443
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
is_me,

Не проблема, если свойство назвать по-другому - все работает. Я же хочу его назвать именно Text. =)
Должен же быть способ.
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998456
is_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StaffaKT, похоже ты перезаписываешь свойство Text класса - предка UserControl, a не класса Label
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998507
is_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
           // 
            // UserControl1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Controls.Add(this._textBox);
            this.Controls.Add(this._label);
            this.Name = "UserControl1";
            this.Size = new System.Drawing.Size(109, 40);
            this.ResumeLayout(false);
            this.PerformLayout();


В конструкторе надо указать this.Text = "123123121";
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998522
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
is_me,

Так тоже работает, но все-таки хотелось бы реализовать через палитру свойств, т.к. такой контрол на форме не один.
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998538
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Накопал, что при изменении в палитре свойств значения Text, в код дизайнера ничего не попадает =(
Похоже здесь собака зарыта...
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998590
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос закрыт.

Заработало так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        public override string Text
        {
            get { return this._label.Text; }
            set { this._label.Text = value; }
        }
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998757
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
StaffaKTВопрос закрыт.

Заработало так:
А у тексбокса не пропало?
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998782
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,

А почему оно должно пропасть? Я переопределяю свойство Text от UserControl только для своего класса. Классы Label и TextBox - это лишь поля моего класса, я их не трогаю.
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998787
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще, конечно, где бы почитать про все атрибуты [...]?
В msdn как то все разрознено и запутано описано...
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998885
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
StaffaKT,

Был невнимателен. У текстбокса вы переопределяете Lines.

Вообще-то я бы ввел два новых свойства:

LabelText и TexBoxText
...
Рейтинг: 0 / 0
Свойства своего контрола
    #37998893
StaffaKT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,

В итоге так и сделал =)
Но надо было разобраться именно в переопределении, т.к. только учусь.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Свойства своего контрола
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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