gpt4 book ai didi

c# - 创建 Photoshop 风格的 float 工具调色板

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:10 25 4
gpt4 key购买 nike

关于如何创建 Photoshop 风格的 float 工具调色板有什么建议吗?我尝试了几个想法,例如:

  1. 创建子窗口,将其 FormBorderStyle 设置为 FixedToolWindow 并将其显示为主窗体的子窗体,但工具窗口从主窗体窃取焦点。
  2. 如上所述创建子窗口并使用传递给 CreateParams 的各种标志组合,但仍然遇到相同的焦点问题。
  3. 将工具选项板创建为 UserControl 并通过将其父级设置为桌面(通过 user32#SetParent 函数)使其“ float ”,但随后它不再是主窗体的子级并且不会最小化/恢复与主窗体。

我认为 #3 是可行的方法,我将不得不编写代码来使工具选项板窗口状态与主窗体保持同步,并实现拖动选项板的能力,绘制边框等...

关于解决此问题的更好方法的建议?

最佳答案

我只知道一种方法可以做到这一点,但它会将您限制为不能像 Photoshop 中那样离开父窗体的子窗体。覆盖子窗体上的 CreateParams:

const int WS_EX_NOACTIVATE = 0x8000000;
const int WS_CHILD = 0x40000000;
protected override CreateParams CreateParams
{
get
{
CreateParams ret = base.CreateParams;
ret.Style |= WS_CHILD;
ret.ExStyle |= WS_EX_NOACTIVATE;
return ret;
}
}

确保当您在子窗体上调用 Show 时,您使用的重载采用 IWin32Window 并传入父窗体。

关于c# - 创建 Photoshop 风格的 float 工具调色板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3213709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com