有很多人问过这个问题,所以特意在博客贴出..
取自Acad官方的博客 https://adndevblog.typepad.com/autocad/2012/06/paletteset-minimum-docked-width.html
原文:
我有一个PaletteSet,它包含一个工具栏,其宽度设置为40像素。这在AutoCAD 2008中很好,但在AutoCAD 2011中,当PaletteSet停靠时,我不能使宽度小于150像素。
在AutoCAD 2009中,包括PaletteSets在内的可停靠窗口的最小停靠宽度已从40像素更改为150像素,在AutoCAD 2011中也是如此。
然而,在AutoCAD 2012中,引入了一个新的ARX函数,它可以覆盖此值:
public class CommandsTestMyPalette
{
PaletteSet ps;
/// <summary>
/// 设置边栏面板最小宽度
/// </summary>
/// <param name="width"></param>
/// <returns></returns>
[DllImport("adui18.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?AdUiSetDockBarMinWidth@@YA_NH@Z")]
public static extern bool AdUiSetDockBarMinWidth(int width);
[CommandMethod("MyPalette")]
public void MyPalette()
{
AdUiSetDockBarMinWidth(40);
if (ps == null)
{
ps = new PaletteSet("My Palette 1")
{
MinimumSize = new System.Drawing.Size(30, 300),
Dock = DockSides.Top
};
//var myCtrl = new MyControl1();
//myCtrl.Dock = System.Windows.Forms.DockStyle.Fill;
//ps.Add("test", myCtrl);
}
if (ps != null)
{
ps.Visible = true;
}
}
}
其他版本可以通过 Depends.exe 去找 "adui18.dll" 内的接口...
如果需要修改18这个数字已达动态加载的目的,可以见动态调用dll
(完)