Saludos, si lo que quieres es colocar una marca de agua en tus TextBox, puedes crear una nueva clase a la cual le pondrás de nombre NativeTextBox.
Luego ingresa el siguiente código en la clase:
Código csharp:
Ver originalusing System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace JBucaro.NativeControls
{
class NativeTextBox : TextBox
{
public const int ECM_FIRST = 0x1500;
public const int EM_SETCUEBANNER = ECM_FIRST + 1;
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);
private string _cueBannerText = string.Empty;
public string CueBannerText
{
get
{
return _cueBannerText;
}
set
{
_cueBannerText = value;
this.SetCueText();
}
}
private void SetCueText()
{
SendMessage
(this.Handle, EM_SETCUEBANNER,
new IntPtr
(0), _cueBannerText
); }
}
}
Al compilar, aparecerá un nuevo control en tu barra de herramientas (Componentes de "tu proyecto").
Únicamente debes de reemplazar tus TextBox con este control y llenar el valor de la propiedad CueBannerText con el texto que quieres que se muestre si el texto no tiene contenido. Ya no necesitas hacer la comparación en el evento OnLeave.
Saludos,