我目前正在尝试重新创建可视工作室的停靠面板/窗体。我想将相同的系统应用于不同的项目来处理不同的窗口视图,但首先我想重新创建它。
到目前为止,我一直在MainForm和null之间切换MDiParent属性,但是无法重新创建在Visual Studio中看到的平滑过渡。它总是很笨拙,有一半时间我发现MouseUP事件我将交换机绑定到很少工作(我目前正在使用位置更改事件)。
要移动表单,我一直在使用我找到的这个方便的代码块;
#region Form Movement
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
private void MoveForm()
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
#endregion
要处理Dock / UnDock,我正在使用此代码;
private void DockToMain()
{
Point f = Form1.Main.PointToClient(this.Location);
Point newP = new Point(f.X - 25, f.Y - 51);
try { this.MdiParent = Form1.Main; } catch { }
this.Location = newP;
}
private void UnDockFromMain()
{
Point f = Form1.Main.PointToScreen(this.Location);
Point newP = new Point(f.X + 25, f.Y + 51);
try { this.MdiParent = null; } catch { }
this.Location = newP;
}
有没有办法在Winforms中重新创建Dock Panel / Form?我是否在这里走上了正确的轨道,还是有更好的方式我没有看到?
答案 0 :(得分:-1)
只是回答这个问题,意志是完全正确的。我以某种方式得到了它的工作,但是它太麻烦了,没有任何用处。只需切换到WPF(从WinForms跳转并不困难)并使用xceedsoftware" Extended WPF Toolkit"
中的Avalon dock控件