欢迎加我的QQ群:193522571,一起来讨论、交流!

AutoCAD.Net/C#.Net QQ群:193522571 同一套窗体代码,同时用在Winform、PvBox和PvTools中

1.在Test文件夹中增加新的Winform项目P1,并且进行前期的窗体调试;

注意需要把tlpMain设置为public:

public System.Windows.Forms.TableLayoutPanel tlpMain;

 

2.在PressureVessel项目中链接P1;

修改P1项目代码:

复制代码
namespace PressureVessel
{
    public partial class FrmGasketMy : Form
    {
        public FrmGasketMy()
        {
#if !PVBOX
            InitializeComponent();
#endif
        }

        DataTable dtMain;
        string sGasketType, sMatType;
        string sM, sY;
        string sImageName;

#if PVBOX
        public void FormLoad()
        {
            InitializeComponent();
            btnExit.Visible = false;
#else
        private void FrmGasketMy_Load(object sender, EventArgs e)
        {
#endif
复制代码

修改P1.designer.cs中的代码:

        private void InitializeComponent()
        {
#if !PVBOX
            this.tlpMain = new System.Windows.Forms.TableLayoutPanel();
#endif
#if !PVBOX
            this.Controls.Add(this.tlpMain);
            this.Load += new System.EventHandler(this.FrmGasketMy_Load);
#endif

3.在PvBox项目中按如下:

复制代码
//新增加ToolName枚举值
        public enum ToolName
        {
            MaterialAllowanceASME = 1,
            MaterialAllowanceGB,
            GbCategory,
            ToxicityDegree,
            Pipe,
            Flange,
            Fitting,
            Upipe,
            ExpansionJoint,
            Saddle,
            SupportLug,
            BracketSupport,
            HeatExchanger,
            Head,
            PipeLengthCal,
            BoltForce,
            Sanitory,
            LiquidLevel,
            CalWorld,
            Shape,
            HgFastener,
            Fastener,
            ReinforcePlate,
            GasketMy,
        }
复制代码
        /// <summary>
        /// 垫片MY值
        /// </summary>
        TableLayoutPanel tlpGasketMy = new TableLayoutPanel();
        bool isGasketMyLoad = false;
        FrmGasketMy GasketMy;
复制代码
                    case ToolName.GasketMy:
                        //垫片MY值
                        UpdateUserRecord();
                        if (!isGasketMyLoad)
                        {
                            scMain.Panel2.Controls.Add(tlpGasketMy);
                            GasketMy.tlpMain = tlpGasketMy;
                            GasketMy.FormLoad();

                            isGasketMyLoad = true;
                            tlpGasketMy.Dock = DockStyle.Fill;
                        }
                        else
                        {
                            scMain.Panel2.Controls.Add(tlpGasketMy);
                        }
                        break;
复制代码

4.PvTools中:

SearchOut.cs

复制代码
        /// <summary>
        /// 查垫片MY
        /// <summary>
        public void CDPMY()
        {
            FrmGasketMy frm = new FrmGasketMy();
            frm.SetFrmCenter();
            var result = Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(frm);
        }
复制代码

Command.cs

复制代码
        /// <summary>
        ///查垫片MY:查询垫片的M、Y值
        /// <summary>
        [CommandMethod("CDPMY")]
    public static void CDPMY()
    {
      if (IsModelOk("CDPMY"))
      {
        SearchOut.CDPMY();
      }
    }
复制代码

 

这样同一个Form就可以在多个项目中使用了,如下图:

a、Winform中:

 

b、PvBox中:

 

 c、PvTools中:

 

posted @   swtool  阅读(193)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2014-06-29 ObjectARX2010 学习笔记004:复制多段线点生成新多段线
2014-06-29 ObjectARX2010 学习笔记003:增加实体到数据库
2014-06-29 vs2008中文版为什么写中文注释时,文字下面会有红色错误提示波浪线!?
2014-06-29 ObjectARX2010 学习笔记002:读取已经存在的DWG文件中的内容
2014-06-29 ObjectARX2010 学习笔记001:在新数据库中创建直线并将此数据库保存成DWG文件
2014-06-29 ObjectARX AutoCAD VC VS2008SP1中安装ObjectARX 2010向导后在VS中的ARX工具栏是空的?
欢迎加我的QQ群:193522571,一起来讨论、交流!
点击右上角即可分享
微信分享提示