【问题标题】:how to Make a form to always stay in desktop...in vb.net c#如何使表单始终留在桌面...在 vb.net c#
【发布时间】:2011-02-02 05:43:29
【问题描述】:

我想制作一个完美固定在桌面上的表单...当其他应用程序打开时它不会出现,而当单击相同的表单时也不会出现...保持固定在桌面上,就像桌面上的图标... .

【问题讨论】:

  • 那么,您希望用户根本无法与您的表单交互吗?当你点击它时它不应该得到焦点,他们不应该能够移动它或调整它的大小,他们不应该能够从视图中隐藏它?看起来我不会安装它。
  • 我希望表单粘贴在桌面上......与我的计算机图标的工作方式相同......当我们点击它时,它会打开驱动器......单击它打开其他...但是表单应保留在桌面上...假设您在资源管理器中打开一个页面并单击它位于前面的此表单...我不希望它出现在任何前面其他...除了桌面
  • 图标实际上是桌面的一部分。这并不意味着桌面是可扩展的。它的设计不是为了附加随机的应用程序窗口,如果你设法让它工作,那将导致各种问题。你读过article I linked to吗?你需要做的只是管理你的应用程序的Z顺序。 Form.SendToBack() 之类的东西,没有附加到桌面窗口。你不是桌面的一部分。你不像一个偶像。

标签: .net winforms forms


【解决方案1】:

http://www.vbforums.com/showthread.php?t=351533

试试看?我想这就是你要找的。我无法自己测试它,但据我所知,描述似乎与您正在寻找的内容相匹配。

【讨论】:

  • 该页面有 vb.net 代码。文章顶部还有一个 c# 代码链接。
【解决方案2】:

尝试使用这个:

[DllImport("user32")]
public static extern int  SetParent(int   hWndChild, int   hWndNewParent)

hWndChild 是表单句柄,hWndNewParent 是桌面句柄

【讨论】:

  • -1 这是一个糟糕的建议。 您不应滥用桌面窗口。这和你在幼儿园学到的原则是一样的:不要乱搞不属于你的东西。调用SetParent 使你的窗体成为桌面窗口的子窗口,会导致窗口管理器将桌面的输入队列同步到你的子窗口,这会导致各种问题。有关所有血腥细节,请参阅 Raymond Chen 的 blog article on the subject
猜你喜欢
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 2013-05-22
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
相关资源
最近更新 更多