有什么方法可以使用WinForms创建能够打开其他窗口的类似于“码头”的应用程序吗?

时间:2019-05-02 21:02:26

标签: c# windows winforms desktop-application software-design

因此,我正在尝试使用界面类似于RocketDock等其他程序的程序。运行该程序时,它应显示为没有边框或其他任何东西的垂直底座。在“码头”内将是图标的集合,每个图标都会在码头之外打开一个窗口。在窗口内部,可以根据单击的图标执行不同的功能。我以为我可以使用WinForms做类似的事情,但是我想创建一个只要程序运行就可以持久保存在桌面上的东西。在WinForms中可以吗?是否有图书馆或其他可以帮助我的东西?

我对所谈论的内容做了一个简短的概述。我希望这可以帮助阐明我的意思。

example sketch

我现在实际上没有太多工作。我仍在努力寻找起点。

1 个答案:

答案 0 :(得分:0)

选中Spy ++ https://docs.microsoft.com/en-us/visualstudio/debugger/introducing-spy-increment?view=vs-2019用作学习您用于灵感的产品上所有窗口样式的工具。

检查使用System.Windows.Forms.Form.CreateParams是否足以增加将要创建的窗口(在派生的Form类中覆盖它),例如:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    protected override CreateParams CreateParams
    {
        get
        {
            var r = base.CreateParams;
            r.ExStyle |= 0x88;
            return r;
        }
    }
}

在此处查看样式信息:

主题如此之大,以至于您需要进行大量研究才能获得所需的结果,但这应该是一个很好的起点。

还值得注意的是,P / Invoke允许您调用几乎所有Win32函数来使用.NET API无法提供的Windows行为。