下面是一个常规创建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"命令。
转载于:
https://www.cnblogs.com/smallstoneman/p/11227549.html