2008-09-24 1 views

ответ

47

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

public class Stuff 
{ 
    [Editor(typeof(MultilineStringEditor), typeof(UITypeEditor))] 
    public string MultiLineProperty { get; set; } 
} 
+0

Какую версию .NET Framework вы обнаружили? – 2008-09-24 22:52:45

2

Нет, вам нужно будет создать так называемый редактор модального интерфейса. Вам нужно создать класс, который наследуется от UITypeEditor. Это в основном форма, которая отображается, когда вы нажимаете на кнопку с многоточием в правой части свойства, которое вы редактируете.

Единственный недостаток, который я нашел, заключался в том, что мне нужно было украсить конкретное свойство строки конкретным атрибутом. Прошло некоторое время с тех пор, как я должен был это сделать. Я получил эту информацию из книги Криса Продал под названием «Программирование Windows Forms в C#».

Имеется визуальная коммерческая недвижимость под названием Smart PropertyGrid.NET от VisualHint.

0

Да. Я не совсем помню, как это называется, но посмотрите на редактор свойств предметов что-то вроде ComboBox

Отредактировано: На @fryguybob, ComboBox.Items использует System.Windows.Forms.Design.ListControlStringCollectionEditor

+0

ComboBox.Items использует System.Windows.Forms.Design.ListControlStringCollectionEditor, я дон Не думаю, что это то, что я ищу, но это близко. – fryguybob 2008-09-24 21:31:40

0

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

Вот текст клиент редактор класса реализован с UITypeEditor

public class MultiLineTextEditor : UITypeEditor 
    { 
     private IWindowsFormsEditorService _editorService; 

     public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) 
     { 
      return UITypeEditorEditStyle.DropDown; 
     } 

     public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) 
     { 
      _editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); 

      TextBox textEditorBox = new TextBox(); 
      textEditorBox.Multiline = true; 
      textEditorBox.ScrollBars = ScrollBars.Vertical; 
      textEditorBox.Width = 250; 
      textEditorBox.Height = 150; 
      textEditorBox.BorderStyle = BorderStyle.None; 
      textEditorBox.AcceptsReturn = true; 

      textEditorBox.Text = value as string; 

      _editorService.DropDownControl(textEditorBox); 

      return textEditorBox.Text; 

     } 

    } 

Write your custom property grid and apply this Editor attribute to the property 

class CustomPropertyGrid 
    { 
     private string multiLineStr = string.Empty; 

     [Editor(typeof(MultiLineTextEditor), typeof(UITypeEditor))] 
     public string MultiLineStr 
     { 
      get { return multiLineStr; } 
      set { multiLineStr = value; } 
     } 


    } 

В основной форме присвоить этот объект

propertyGrid1.SelectedObject = new CustomPropertyGrid();