visual valor usar una texto tabla solo seleccionar que propiedades lectura etiqueta cuadro crear como busque c# winforms textbox

c# - valor - ¿Cómo lo hago para que cuando el usuario vaya a un cuadro de texto, el texto desaparezca? DO#



textbox solo lectura visual basic (4)

Aquí hay un tutorial sobre cómo hacer filigranas en cuadros de texto.

http://vidmar.net/weblog/archive/2008/11/05/watermarked-textbox-in-windows-forms-on-.net.aspx

Visual C # .NET:

private void tbAddress_GotFocus() { tbAddress.Text = ""; } private void tbAddress_LostFocus() { if (tbAddress.Text == "") { tbAddress.Text = "Email Address"; } }

Por lo tanto, estoy tratando de usar ese código para que haya texto en un cuadro de texto (Formularios de Windows) y luego cuando el cuadro de texto se enfoca (cuando el usuario hace clic dentro de él), el texto desaparece. De esta forma, parece una forma con la etiqueta dentro del cuadro de texto.

Entonces, ¿por qué no funciona ese código, o hay una mejor manera de hacerlo?


No funciona porque, de forma predeterminada, el cuadro de texto no desencadena una devolución de datos, y sin una devolución de datos, los eventos del lado del servidor no se procesan.

Su mejor opción aquí es usar javascript del lado del cliente para manejar esta funcionalidad, ya que el disparo circular hacia el servidor en cada evento de cuadro de texto es un desperdicio y molesto para el usuario.


Use el evento textBox1.GotFocus

textBox1.GotFocus += textBox1_GotFocus;//at the designer, constructor or form load... private void textBox1_GotFocus(object sender, EventArgs e) { textBox1.Clear();//clear the text. }

//Actualizar:

Si ya lo hizo, entonces el problema debe estar en otro lugar, este código debería estar ejecutándose sin ningún problema.


+1 a @RexM para el puntero a la respuesta más simple y, probablemente, la mejor.

Hay un enfoque más complejo para esto que se basa libremente en la idea de esta respuesta . Permite personalizar el color del texto mostrado, pero probablemente tenga otros problemas.

Realmente recomendaría usar la respuesta de RexM. De todos modos, como referencia, aquí está el código para el otro enfoque:

using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; namespace MyControls { public class HintedTextBox : TextBox { public HintedTextBox() : base() { ResetHintColor(); } [Description("The color of the hint text to display"), Category("Appearance")] public Color HintColor { get; set; } // Default value handling for HintColor private Color DefaultHintColor { get { return Color.LightGray; } } public void ResetHintColor() { HintColor = Color.LightGray; } public bool ShouldSerializeHintColor() { return !HintColor.Equals(DefaultHintColor); } [Description("The textual hint to display in the textbox"), Category("Behavior"), Localizable(true)] public string HintText { get { return m_hintText; } set { if (m_hintText != value) { m_hintText = value; UpdateHintTextState(true); } } } private string m_hintText = ""; protected override void OnGotFocus(EventArgs e) { base.OnGotFocus(e); HasFocus = true; UpdateHintTextState(); } protected override void OnLostFocus(EventArgs e) { base.OnLostFocus(e); HasFocus = false; UpdateHintTextState(); } protected override void OnTextChanged(EventArgs e) { base.OnTextChanged(e); UpdateHintTextState(); } protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == 15) // WM_PAINT { PaintHintText(); } } private bool DisplayHintText { get; set; } private bool HasFocus { get; set; } private void PaintHintText() { if (DisplayHintText) { using (Graphics g = Graphics.FromHwnd(this.Handle)) using (SolidBrush b = new SolidBrush(HintColor)) { StringFormat sf = new StringFormat(); switch (this.TextAlign) { case HorizontalAlignment.Center: sf.Alignment = StringAlignment.Center; break; case HorizontalAlignment.Right: sf.Alignment = StringAlignment.Far; break; default: sf.Alignment = StringAlignment.Near; break; } g.DrawString(HintText, Font, b, ClientRectangle, sf); } } } private void UpdateHintTextState() { UpdateHintTextState(false); } private void UpdateHintTextState(bool forceInvalidate) { bool prevState = DisplayHintText; if (HintText.Length == 0) DisplayHintText = false; else if (Text.Length != 0) DisplayHintText = false; else DisplayHintText = !HasFocus; if (DisplayHintText != prevState || forceInvalidate) Invalidate(); } } }