创建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"命令。