#c# #winforms
#c# #winforms
Вопрос:
Я несколько новичок в c #, поэтому прошу прощения, если у меня какая-либо терминология неправильная
У меня есть пользовательский элемент управления, и я хочу передать класс «Buffer», который я создал в окне свойств редактора. Я получил свойство «Buffer», которое отображается в редакторе, но оно выделено серым цветом, и я не могу его редактировать.
В качестве примера я также добавил новое строковое свойство с именем «myText», которое я могу редактировать в редакторе.
Можно ли использовать классы для свойства?
Вот код.
public partial class BufferControl : UserControl
{
Buffer buffer = null;
string caption = "";
[
Description("Buffer to use for reads and writes"),
Category("Appearance")
]
public Buffer Buffer
{
get { return buffer; }
set
{
buffer = value;
}
}
[
Description("Text for control"),
Category("Appearance")
]
public string MyText
{
get { return caption; }
set
{
caption = value;
}
}
public BufferControl()
{
InitializeComponent();
}
}
Комментарии:
1. Если типы свойств вашего класса Buffer (плохое название, измените его как можно скорее) являются всеми известными типами (например, string, double, enumerators), то просто украсьте класс
[TypeConverter(typeof(ExpandableObjectConverter))]
. Вам также необходимо назначить новый объект Buffer в конфигурации UserControl. Поскольку это критическое изменение , вам необходимо удалить UC из родительской формы, перестроить проект и добавить новый UC в форму. Если класс Buffer вместо этого имеет сложную структуру, вам нужен пользовательскийUITypeEditor
. Редактор может быть формой, которая обеспечивает редактирование типов и преобразования (в конечном итоге).2. Крайне маловероятно, что «буфер для чтения и записи» должен быть свойством, доступным для редактирования пользователем. Примените атрибут [Browsable(false)].
3. Добавьте
Browsable(true)
и проверьте, имеет ли свойствоset
метод (не свойство только для чтения)