有没有办法使用 WinForms 创建一个能够打开其他窗口的类似"dock"的应用程序?



因此,我正在尝试使用类似于其他程序(例如Rocketdock等(的程序进行处理。或任何东西。"码头"内部是一个图标集合,每个图标都打开了码头以外的窗口。在窗口内部,可以根据单击哪个图标执行不同的功能。我认为我可以使用Winforms做这样的事情,但是只要程序正在运行,我就想创建桌面上持久的东西。这在Winforms中可以吗?有图书馆或可以帮助我的东西吗?

我快速绘制了我在说什么。我希望这可以帮助澄清我的意思。

示例草图

我现在没有太多工作。我仍在尝试找出一个起点。

检查间谍 https://learn.microsoft.com/en-us/visualstudio/debugger/introducing-spy-increment?view=vs-2019您用于灵感的产品上的窗户样式。

检查是否使用system.windows.forms.form.createparams足以增强将创建的窗口(以您的派生表单类覆盖它(,例如:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    protected override CreateParams CreateParams
    {
        get
        {
            var r = base.CreateParams;
            r.ExStyle |= 0x88;
            return r;
        }
    }
}

请参阅此处的样式信息:

  • https://learn.microsoft.com/en-us/windows/desktop/winmsg/window-styles
  • https://learn.microsoft.com/en-us/windows/desktop/winmsg/extended-window-styles

主题是如此之大,以至于您需要进行大量研究才能达到所需的结果,但这应该提供一个良好的开始。

也值得注意的是,P/Invoke允许您调用几乎所有Win32函数使用Windows行为,而Windows行为是通过.NET API可用的。

最新更新