2015-03-12 1 views
-2

(je l'ai enlevé la vieille car il est redondant)VB.NET Cue Textbox Bannière pas mise - pas d'erreur

EDIT -

Même sans aucune connaissance de C#, j'ai essayé de Convertissez le code que Lars m'a indiqué ... Géré pour le compiler. Et utilisable depuis la boîte à outils. Cependant, il ne semble pas CueTextBox1.Cue = "Test" fonctionne. Encore une fois, aucune erreur ne semble être produite. J'ai vérifié et la propriété de cue a été ajoutée aux propriétés pour le CueTextBox, mais le changer ne change pas la cue, ou apparemment n'importe quoi d'ailleurs. Voici le code converti:

Imports System 
Imports System.ComponentModel 
Imports System.Windows.Forms 
Imports System.Runtime.InteropServices 

Class CueTextBox 
    Inherits TextBox 
    Public Property Cue() As String 
     Get 
      Return mCue 
     End Get 
     Set(value As String) 
      mCue = value 
      updateCue() 
     End Set 
    End Property 

    Private Sub updateCue() 
     If (Me.IsHandleCreated And mCue = Nothing) Then 
      SendMessage(Me.Handle, &H1501, New IntPtr(1), mCue) 
     End If 
    End Sub 

    Protected Overrides Sub OnHandleCreated(e As EventArgs) 
     MyBase.OnHandleCreated(e) 
     updateCue() 
    End Sub 

    Private mCue As String 

    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _ 
    Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As  Integer, ByVal wp As IntPtr, ByVal lp As String) As IntPtr 
    End Function 
End Class 

Comme suggéré Plutonix, j'ai changé la dernière PARAM la PInvoke Malheureusement il n'y avait pas de changement. Voici le bloc mis à jour.

<DllImport("user32.dll", CharSet:=CharSet.Auto)> _ 
    Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wp As IntPtr, <MarshalAs(UnmanagedType.LPWStr)> LParm As String) As IntPtr 
    End Function 

EDIT2 -

obtenir encore la même question comme indiqué dans le titre. Toute aide serait grandement appréciée. La queue fonctionne en vue de conception, mais lors de la compilation, dans certains projets, la queue ne parvient pas à définir.

+1

Le code n'a aucun sens et ne peut ni être compilé ni être utilisable. Nous ne sommes pas des clairvoyants, vous devrez poster ce que vous essayez réellement d'utiliser. –

+0

Voir [Filigrane TextBox dans WinForms] (http://stackoverflow.com/a/4902969/719186) – LarsTech

+0

Hans Passant, je l'ai fait plus simple pour vous car vous ne semblez pas comprendre. – jackjt8

Répondre

0

Un grand merci à @Plutonix. Le code fixe et entièrement fonctionnel est comme suit. Le problème était dans updateCue(), principalement avec mCue = Nothing. Changement à String.IsNullOrEmpty (mCue) = False résout le problème. Mais comme l'a souligné @Plutonix, Supprimer la vérification permettrait de passer des chaînes vides.

Imports System 
Imports System.ComponentModel 
Imports System.Windows.Forms 
Imports System.Runtime.InteropServices 

Class CueTextBox 
    Inherits TextBox 
    Public Property Cue() As String 
     Get 
      Return mCue 
     End Get 
     Set(value As String) 
      mCue = value 
      updateCue() 
     End Set 
    End Property 

    Private Sub updateCue() 
     If (Me.IsHandleCreated) Then 
      SendMessage(Me.Handle, &H1501, New IntPtr(1), mCue) 
     End If 
    End Sub 

    Protected Overrides Sub OnHandleCreated(e As EventArgs) 
     MyBase.OnHandleCreated(e) 
     updateCue() 
    End Sub 

    Private mCue As String 

    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _ 
    Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wp As IntPtr, <MarshalAs(UnmanagedType.LPWStr)> LParm As String) As IntPtr 
    End Function 
End Class 

EDIT - Cette semi-officielle. Pour une raison quelconque, le signal n'apparaît toujours pas à l'exécution sur certains projets. Cela me porte à croire qu'il y a un problème avec ces projets. Quant à quoi, je ne sais pas.

+0

Jusqu'ici, j'ai essayé quelques 20 forums impairs, seulement certains ne fonctionnent pas. – jackjt8