WinForms Cue TextBox

Eine Möglichkeit mit wenig Aufwand eine TextBox mit einem Platzhalter (Cue-Banner) zu erstellen. Erstelle hierfür eine neue Klasse in deinem Projekt und füge den unten gezeigten Code ein, dann kompilieren. Platziere nun das neue Steuerelement/Control in deiner Form und setze die Cue-Eigenschaft.

Du erhälst eine Live-Vorschau des Cue-Wertes im Designer, lokalisiert auf die Spracheigenschaft des Formulars.

using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;

class CueTextBox : TextBox {
    [Localizable(true)]
    public string Cue {
        get { return mCue; }
        set { mCue = value; updateCue(); }
    }

    private void updateCue() {
        if (this.IsHandleCreated && mCue != null) {
            SendMessage(this.Handle, 0x1501, (IntPtr)1, mCue);
        }
    }

    protected override void OnHandleCreated(EventArgs e) {
        base.OnHandleCreated(e);
        updateCue();
    }

    private string mCue;

    // PInvoke
    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, string lp);
}