winform实现窗体设计器,什么?我也能用visual studio做一个visual studio,彻底解决鸡生蛋、蛋生鸡问题!

背景

好家伙,客户居然要自己定制流程,希望我们做一个可视化的窗体设计程序,要求实现他们定义的流程语言,拖拉拽实现他们的业务。

方案

1、新建winform[.net core 8]项目命名为WinFormDesigner。

2、修改Form1.cs名字为MainForm.cs。

3、设置自定义控件基类MyControl,使其继承自用户控件类UserControl,宽高设置为(200,100),给其四周添加共8个按钮,方便拖拉拽,并在其中放置一个panel,用来承载winform自带控件。为其添加一个ContextMenuStrip命名为Menu,并配置ContextMenuStrip属性为Menu。

winform实现窗体设计器,什么?我也能用visual studio做一个visual studio,彻底解决鸡生蛋、蛋生鸡问题!_第1张图片

MyControl.cs代码修改为

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinFormDesigner.MyControls
{
    public partial class MyControl : UserControl
    {
        public static PropertyGrid PropertyGrid { get; } = new PropertyGrid() { Dock = DockStyle.Fill };
        public static int MinSize { set; get; } = 60;

        private readonly List

重新生成解决方案。

4、打开MainForm.cs窗体设计器,在工具箱里就可以看到自己的MyControl控件了

winform实现窗体设计器,什么?我也能用visual studio做一个visual studio,彻底解决鸡生蛋、蛋生鸡问题!_第2张图片 

5、MainForm.cs窗体设计器中,放入三个Panel控件分别命名为[panel_Left、panel_Right、panel_Fill],在panel_Left右边添加一个分隔控件Splitter{Dock=Left}、在panel_Right左边添加一个Splitter{Dock=Right}。

然后将三个panel的Dock属性按名字进行设置,让其呈现左中右效果,并由我们的分隔控件隔开,方便伸缩三个panel的大小。

6、将我们的MyControl控件拖一个进panel_Fill中,运行程序,即可体验基础效果。

7、本案例只是简单抛砖引玉,如需商业应用,请自行深入探究。

案例代码网址

WinFormDesigner: 使用winform做一个窗体设计器【样例】 (gitee.com)

8、效果

winform实现窗体设计器,什么?我也能用visual studio做一个visual studio,彻底解决鸡生蛋、蛋生鸡问题!_第3张图片

winform实现窗体设计器,什么?我也能用visual studio做一个visual studio,彻底解决鸡生蛋、蛋生鸡问题!_第4张图片

你可能感兴趣的:(visual,studio,ide)