创建PaletteSet的一个问题

下面是一个常规创建PaletteSet面板的代码:

        public static PaletteSet m_ps = null;
        [CommandMethod("MyPalette")]
        public void MyPalette()
        {
            if (m_ps == null)
            {
                m_ps = new PaletteSet("这是我的面板", typeof(CreatePalette).GUID);
                //创建一个面板
                Button bt = new Button();
                bt.Size = new System.Drawing.Size(50, 25);
                bt.Text = "点我";
                //创建一个容器
                Panel panel = new Panel();
                panel.Controls.Add(bt);
                //将容器添加入面板
                m_ps.Add("按钮", panel);
            }
            m_ps.Visible = true;
            m_ps.Size = new System.Drawing.Size(150, 900);
            m_ps.Dock = DockSides.Left;
        }

大部分的书本和网上教程基本都是这样,加载后,输入命令也没有任何问题。

问题出现在,关闭CAD,下次打开后命令行会出现以下问题:

当然,这并没有多大影响,因为它在第三次打开CAD后就不再出现这个问题了(前提是第二次的时候不再执行该命令)。

之前遇到很多次该问题,解决的办法是:

m_ps = new PaletteSet("", typeof(CreatePalette).GUID);

但这带来的问题就是,面板左上角的标题名称是空的。

今天浏览一个国外网站的时候,有人提到该问题,并给出正确的解决方案:


 

m_ps = new PaletteSet("", typeof(CreatePalette).GUID);
m_ps.Name = "这是我的面板";

这样既保证了面板标题正确显示,也不会在下次启动CAD的时候出现以上问题。

new PaletteSet(string name, GUID toolID);

该处name并不是指的是标题名,与PaletteSet.Name属性不一样,name指的是打开面板的命令。

当程序设置为随CAD启动时,m_ps = new PaletteSet("MyPalette", typeof(CreatePalette).GUID);

会自动执行"MyPalette"命令。

 

posted @ 2019-07-22 18:18  小石头|Stone  阅读(211)  评论(0编辑  收藏