none
como hacer un (placeholder HTML) en Windows Form C# RRS feed

  • 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);

                }

    jueves, 19 de octubre de 2017 13:08

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;
                    }
                }




    jueves, 19 de octubre de 2017 13:39

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:

    jueves, 19 de octubre de 2017 13:16
  • tienes un textbox y dentro tienes en este caso Search Facebook

    cuando apuntas para escribir el texto desaparece..

    como puedo hacer algo asi en windowsForm c#


    jueves, 19 de octubre de 2017 13:28
  • 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;
                    }
                }




    jueves, 19 de octubre de 2017 13:39
  • 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:





    jueves, 19 de octubre de 2017 13:45
  • 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:

    jueves, 19 de octubre de 2017 13:48
  • 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

     NetBarControl

      TextEditor

    jueves, 19 de octubre de 2017 14:50