Principales respuestas
como hacer un (placeholder HTML) en Windows Form C#

Pregunta
-
en HTML se lo conoce como placeholder y el problema es que tengo que hacerlo en WindowsForm, leí que se puede usar GotFocus Lostfocus, eso es sierto? como puedo hacerlo usandolos y como sin usarlos.
intente asi, pero no me reconoce
private void FormRegistroPersona_Load(object sender, EventArgs e)
{
txtCodigo.LostFocus + = new EventHandler(txtCodigo);
}
Respuestas
-
lo solucione con metodos
private void Form_Load(object sender, EventArgs e) { txtbox.GotFocus += new EventHandler(this.TextGotFocus); txtbox.LostFocus += new EventHandler(this.TextLostFocus); } public void TextGotFocus(object sender, EventArgs e) { if (txtbox.Text == "Search Facebook") { txtbox.Text = ""; txtbox.ForeColor = Color.Black; } } public void TextLostFocus(object sender, EventArgs e) { if (txtbox.Text == "") { txtbox.Text = "Search Facebook"; txtbox.ForeColor = Color.LightGray; } }
- Marcado como respuesta rodrig.rodriguez jueves, 19 de octubre de 2017 13:39
- Editado rodrig.rodriguez jueves, 19 de octubre de 2017 13:41
Todas las respuestas
-
Buenas,
Desconozco que es un placeholder porque no se HTML, pero si me explicas en que consiste, igual puedo ayudarte
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
-
-
lo solucione con metodos
private void Form_Load(object sender, EventArgs e) { txtbox.GotFocus += new EventHandler(this.TextGotFocus); txtbox.LostFocus += new EventHandler(this.TextLostFocus); } public void TextGotFocus(object sender, EventArgs e) { if (txtbox.Text == "Search Facebook") { txtbox.Text = ""; txtbox.ForeColor = Color.Black; } } public void TextLostFocus(object sender, EventArgs e) { if (txtbox.Text == "") { txtbox.Text = "Search Facebook"; txtbox.ForeColor = Color.LightGray; } }
- Marcado como respuesta rodrig.rodriguez jueves, 19 de octubre de 2017 13:39
- Editado rodrig.rodriguez jueves, 19 de octubre de 2017 13:41
-
Buenas,
Eso que propones si se puede hacer sin problema con los eventos GotFocus y LostFocus:
public void OnGetFocus(object sender, EventArgs e) { //Comprobamos si el texto es el default, y si lo es lo borramos if (txtCodigo.Text.Contains(txtCodigo.Tag.ToString())) txtCodigo.Text = ""; //Ponemos el color en negro txtCodigo.ForeColor = Color.Black; } public void OnLostFocus(object sender, EventArgs e) { //En caso de que no haya texto, añadimos el texto por defecto y ponemos el color en gris if (String.IsNullOrWhiteSpace(txtCodigo.Text)) { txtCodigo.Text = txtCodigo.Tag.ToString(); txtCodigo.ForeColor = Color.Gray; } }
Y esto lo pones en el constructor del form:
//Almacenamos en el Tag el texto por defecto txtCodigo.Tag = "Introduce el texto..."; //Ponemos el texto por defecto txtCodigo.Text = txtCodigo.Tag.ToString(); //Ponemos el froecolor en gris txtCodigo.ForeColor = Color.Gray; //Suscribimos el textbox a los eventos (Se puede hacer en el diseñador) txtCodigo.GotFocus += new EventHandler(OnGetFocus); txtCodigo.LostFocus += new EventHandler(OnLostFocus);
El resultado es este:
Sin usar eventos no puedes hacerlo salvo que busques algun control desarollado por un tercero que ya lo haga
Nos comentas el resultado o si tienes dudas
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
- Editado Jorge TurradoMVP jueves, 19 de octubre de 2017 13:47
-
lo solucione con metodos
private void Form_Load(object sender, EventArgs e) { txtbox.GotFocus += new EventHandler(this.TextGotFocus); txtbox.LostFocus += new EventHandler(this.TextLostFocus); } public void TextGotFocus(object sender, EventArgs e) { if (txtbox.Text == "Search Facebook") { txtbox.Text = ""; txtbox.ForeColor = Color.Black; } } public void TextLostFocus(object sender, EventArgs e) { if (txtbox.Text == "") { txtbox.Text = "Search Facebook"; txtbox.ForeColor = Color.LightGray; } }
En realidad eso que has usado son eventos ya que los dispara el evento GotFocus y el evento LostFocus.
Atte
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
-
veo que ya lograste resolver o aplicar lo que querías, pero!!!... si tuvieras varios TextBox donde quisieras mostrar una marca de agua o como se le conoce para WinForm "CUEBANNER" seria muy tedioso de la manera que lo has resuelto!!!... esta pregunta ya se ha hecho anterior mente en el foro, una forma global y sencilla de implementarlo seria la siguiente:
crear un componente que implemente la interface "IExtenderProvider" que puedas agregar a tus formularios o UserControl al cual llamaremos "ControlHelper" el cual extendera una nueva propiedad a los TextBox la cual e llamado "CueText", en esta propiedad podrás asignar el texto que quieres que se muestre como Placeholder en los textbox que quieras.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.Windows.Forms; using System.Collections; using System.Runtime.InteropServices; namespace msdn_examples { [ProvideProperty("CueText", typeof(TextBox))] public class ControlHelper : Component, IExtenderProvider { [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] private static extern IntPtr SendMessage(IntPtr hWnd, Int32 Msg, IntPtr wParam, IntPtr lParam); private const int ECM_FIRST = 0x1500; private const int EM_SETCUEBANNER = ECM_FIRST + 1; private readonly IntPtr TRUE = (IntPtr)1; private Hashtable cueBannerTable = new Hashtable(); public bool CanExtend(object extendee) { if (extendee is Control) return true; return false; } [DefaultValue("")] [DisplayName("CueText")] public string GetCueText(TextBox control) { if (control is TextBox) { string cueText = (string)this.cueBannerTable[control]; return cueText == null ? string.Empty : cueText; } return string.Empty; } public void SetCueText(TextBox control, string cueText) { if (control is TextBox) { this.cueBannerTable[control] = cueText; SendMessage(control.Handle, EM_SETCUEBANNER, TRUE, Marshal.StringToBSTR(cueText)); } } } }
Marvin E. Pineda
ComboBoxMultiColumns
- Propuesto como respuesta Jorge TurradoMVP jueves, 19 de octubre de 2017 14:57