Как написать конструкторы WinForms в NET 6.0C#

Место общения программистов C#
Ответить
Anonymous
 Как написать конструкторы WinForms в NET 6.0

Сообщение Anonymous »

Мне нужно создать проект WinForms с компонентами в библиотеке .net версии 6.0.
Но когда я создаю проект и ControlLibrary, дизайнер форм Visual Studio не использует ControlDesigners из ControlLibrary, хотя я правильно привязываю дизайнеров к компоненту.

Код: Выделить всё

  [Designer(typeof(MyControlDesigner))]
[ToolboxItem(true)]
public class MyControl : Control
{

protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.FillRectangle(SystemBrushes.Info, new Rectangle(0, 0, Width, Height));
e.Graphics.DrawString("MyControl", Font, SystemBrushes.InfoText, new PointF(0, 0));
}
}
Я создал несколько списков ActionLists, но они не отображаются в компоненте во время разработки.

Код: Выделить всё

namespace WinFormsControlLibrary1
{
internal class MyControlDesigner : ControlDesigner
{
private DesignerActionListCollection actionLists;

public override DesignerActionListCollection ActionLists
{
get
{
if (actionLists == null)
{
actionLists = new DesignerActionListCollection();
actionLists.Add(new DataAxisGridActionList(Component));
actionLists.AddRange(base.ActionLists);
}
return actionLists;
}
}
}

public class DataAxisGridActionList : DesignerActionList
{

public DataAxisGridActionList(IComponent component) : base(component)
{
}

public override DesignerActionItemCollection GetSortedActionItems()
{
DesignerActionItemCollection items = new DesignerActionItemCollection();
items.Add(new DesignerActionMethodItem(this, "Action1", " Action 1", true));
items.Add(new DesignerActionMethodItem(this, "Action2", "Action 2", true));
return items;
}

public void Action1()
{
MessageBox.Show("Action 1");
}

public void Action2()
{
MessageBox.Show("Action 2");
}
}

}
Для теста я создал аналогичный проект и библиотеку под .NET Framework 4.7.2, и дизайнер там работает корректно.
Изображение

Изображение

Я также прилагаю ссылку на демо-проекты.
https://github.com/dmitrybv/WinForms-Net5-Designers
https://github.com/dmitrybv/WinForms-Ne ... -Designers

Подробнее здесь: https://stackoverflow.com/questions/768 ... in-net-6-0
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»