【发布时间】:2014-02-07 09:17:36
【问题描述】:
我在 GUI 中编辑标签时遇到问题,因此我决定将该标签转换为带有 BackColor 的文本框,因为背景必须使其看起来与标签完全相同,但在关注该文本框后会出现闪烁的光标。这非常难看,我发现的唯一方法是将属性 Enabled 设置为 false,但我还要求在双击后从该文本框中执行某些操作并且只需单击一次。所以如果没有启用控制,它不会对双击做出反应。
基本上我想默认将该文本框作为标签,直到它被单击一次,如果它被双击,那么将执行一些仅重写其他文本框的文本属性的功能。因此,如果单击一次,我想让文本框看起来像真正的文本框,以便在光标闪烁的情况下插入文本。按下 Enter 后,它会再次转换为“假”标签,焦点后光标不会闪烁。
这可能吗?
附:我很抱歉重复,但我不明白如何实施 f.e. [DllImport("user32")] 它用红线在 'DllImport' 下划线,注释是:
The type or namespace 'DllImport' could not be found.
详细:
Error 1 The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?) C:\Users\**\Visual Studio 2013\Projects\Práce\Rozvržení práce\Rozvržení práce\Form1.cs 17 10 Rozvržení práce
Error 2 The type or namespace name 'DllImportAttribute' could not be found (are you missing a using directive or an assembly reference?) C:\Users\**\Visual Studio 2013\Projects\Práce\Rozvržení práce\Rozvržení práce\Form1.cs 17 10 Rozvržení práce
评论解决了
(实施 [System.Runtime.InteropServices.DllImport("user32")] 代替 =D – Sinatr )
让我问一下:
如何重新设置闪烁的光标?我想通过编辑static extern bool HideCaret(IntPtr hWnd);,但是如何?
【问题讨论】:
-
你已经得到了一个代码示例的答案,所以它是重复的。如果您无法复制和粘贴介绍的代码解决方案,请告诉我们您到底有什么不明白的地方。 stackoverflow.com/q/601255/1284902
-
实施
[System.Runtime.InteropServices.DllImport("user32")]而不是=D -
只需将
TabStop设置为false。