【问题标题】:cannot set cuebanner for kryptontextbox无法为 kryptontextbox 设置提示横幅
【发布时间】:2016-11-18 08:19:47
【问题描述】:

我尝试使用以下代码为 kryptontextbox 设置提示横幅

Imports System.Runtime.InteropServices

Public Class Form1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       SetCueText(KryptonTextBox1.Handle, "Enter Name here")
    End Sub
End Class

Public Module CueBannerText
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
    Private Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, <MarshalAs(UnmanagedType.LPWStr)> ByVal lParam As String) As Int32
    End Function
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As IntPtr, ByVal hWnd2 As IntPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As IntPtr
    Private Const EM_SETCUEBANNER As Integer = &H1501

    Public Sub SetCueText(hWnd As IntPtr, text As String)
      if Not hWnd = IntPtr.Zero Then
         SendMessage(hWnd, EM_SETCUEBANNER, 0, text)
      End If
    End Sub
End Module

但是,文本没有设置。我该如何解决这个问题

【问题讨论】:

  • 它的MultiLine 应该设置为false。它也应该来自TextBox。作为替代解决方案,您可以使用 NativeWindow 通过处理 WM_PAINT 消息来绘制显示水印。

标签: .net vb.net winforms krypton-toolkit


【解决方案1】:

EM_SETCUEBANNER 适用于TextBox 控件。 KryptonTextBox 实际上是一个复合 Control,其中包含一个 TextBox

TextBox 使用 TextBox 属性公开。您可以使用KryptonTextBox1.TextBox.Handle 发送EM_SETCUEBANNER 消息。

要查看组件的源代码,请查看GitHub repository。下面是相关部分代码:

public class KryptonTextBox : VisualControlBase, IContainedInputControl
{
    //...
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    [Browsable(false)]
    public TextBox TextBox
    {
        get { return _textBox; }
    }
    //...
}

【讨论】:

  • 感谢您的赞美 :) 当您需要更多关注某个问题时,请随时通知我。如果我有什么要分享的,我会分享。从整个社区中受益比仅从一个社区中受益要好:)
猜你喜欢
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 2013-05-27
  • 2016-03-16
  • 2011-07-25
  • 2014-04-22
相关资源
最近更新 更多