Пользовательский элемент управления .NET 2010, многострочное свойство String для редактирования в конструкторе - PullRequest
0 голосов
/ 21 сентября 2010

Я пишу пользовательский элемент управления и хочу добавить свойство «MessageText» типа String:

<Browsable(True),
  DefaultValue(""),
  Category("CustomControls"),
  Description("Blah."),
  DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
  Public Property MessageText As String

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

Мне нужно то же поведение, что и у системного свойства TextBox, где вы можете нажать на стрелку вниз и написать строки внебольшой текстовый редактор, который появляется:

Как мне это сделать?

1 Ответ

3 голосов
/ 21 сентября 2010

Это объявление свойства TextBoxBase.Text:

[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor)), Localizable(true)]
public override string Text
{
    // etc..  
}

Атрибут [Editor] - это то, что вам нужно.Есть проблемы, если вы также используете .NET 4.0 (обратите внимание на строку версии).Лучше использовать альтернативную версию конструктора.Проект + Добавить ссылку, выберите System.Design.Сделайте так, чтобы это выглядело так:

using System;
using System.ComponentModel;
using System.Drawing.Design;
using System.Windows.Forms;
...
        [Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(UITypeEditor))]
        public string MessageText {
            // etc... 
        }
...