2009-11-10 2 views
7

У меня есть пользовательский элемент управления Windows Form со строковым свойством для установки текста текстового поля. Эта строка может быть многострочной.Разрешить многострочные свойства String в окне свойств

Я заметил, что на некоторых элементах управления с текстовым свойством, а вместо того, чтобы вводить текстовое поле с одиночной строкой, вы получаете немного всплывающих окон, где вы можете вводить несколько строк. (Фактически, элемент управления Textbox Windows Forms позволяет это в свойстве Text.)

Как включить эту функциональность в окне свойств для свойства, которое я разработал?

Ниже не реальный код в моем приложении, но пример того, как такое свойство может быть определено

public string Instructions 
{ 
    get 
    { 
     return TextBox1.Text; 
    } 
    set 
    { 
     TextBox1.Text = value; 
    } 
} 

ответ

14

Вы можете использовать EditorAttribute с MultilineStringEditor:

[EditorAttribute(typeof(MultilineStringEditor), 
       typeof(System.Drawing.Design.UITypeEditor))] 
public string Instructions 
{ 
    get 
    { 
     return TextBox1.Text; 
    } 
    set 
    { 
     TextBox1.Text = value; 
    } 
} 

Чтобы не добавлять ссылку на System.Design и тем самым требовать полную структуру, вы также можете записать атрибут следующим образом:

[EditorAttribute(
    "System.ComponentModel.Design.MultilineStringEditor, System.Design", 
    "System.Drawing.Design.UITypeEditor")] 

Хотя сейчас это не проблема, поскольку они прекратили разделение структуры на профиль клиента и полный.

+1

К сожалению, мне не хватает некоторых ссылок. Я не получаю MiltilineStringEditor в качестве опции в своем Intellisense. Даже когда я использую System.ComponentModel.Design.MultilineStringEditor. И он не будет компилироваться. Если я возьму его на работу, я дам вам кредит на правильный ответ, хотя ... – David

+1

вам нужно обратиться к 'System.Design.dll' – manji

+1

Perfect. Я нашел это самостоятельно и просто возвращался, чтобы опубликовать это как комментарий. Спасибо. Я собираюсь держать это открытым в течение дня или около того, так что, надеюсь, вы получите несколько голосов по моему ответу. Это была довольно неясная часть знаний, и я думаю, вы должны быть вознаграждены. – David

Смежные вопросы