Есть ли встроенный редактор для многострочной строки в PropertyGrid
.Многострочная строка в PropertyGrid
ответ
я обнаружил, что System.Design.dll
имеет System.ComponentModel.Design.MultilineStringEditor
, которые могут быть использованы следующим образом:
public class Stuff
{
[Editor(typeof(MultilineStringEditor), typeof(UITypeEditor))]
public string MultiLineProperty { get; set; }
}
Нет, вам нужно будет создать так называемый редактор модального интерфейса. Вам нужно создать класс, который наследуется от UITypeEditor. Это в основном форма, которая отображается, когда вы нажимаете на кнопку с многоточием в правой части свойства, которое вы редактируете.
Единственный недостаток, который я нашел, заключался в том, что мне нужно было украсить конкретное свойство строки конкретным атрибутом. Прошло некоторое время с тех пор, как я должен был это сделать. Я получил эту информацию из книги Криса Продал под названием «Программирование Windows Forms в C#».
Имеется визуальная коммерческая недвижимость под названием Smart PropertyGrid.NET от VisualHint.
Да. Я не совсем помню, как это называется, но посмотрите на редактор свойств предметов что-то вроде ComboBox
Отредактировано: На @fryguybob, ComboBox.Items использует System.Windows.Forms.Design.ListControlStringCollectionEditor
ComboBox.Items использует System.Windows.Forms.Design.ListControlStringCollectionEditor, я дон Не думаю, что это то, что я ищу, но это близко. – fryguybob 2008-09-24 21:31:40
Мы должны написать наш собственный редактор, чтобы получить многострочную поддержку в собственности сетке.
Вот текст клиент редактор класса реализован с 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();
Какую версию .NET Framework вы обнаружили? – 2008-09-24 22:52:45