Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > textbox_Enter and textbox_Leave


Автор: blackwitcher 15.6.2015, 13:24
не всё правильно работает, помогите smile 


Код

 public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();

        }

        private void Form2_Load(object sender, EventArgs e)
        {
            textBox1.Text = "Создать задачу";
            textBox1.ForeColor = Color.Gray;
            richTextBox1.Text = "Oписание задачи";
            richTextBox1.ForeColor = Color.Gray;
            textBox2.Text = DateTime.Now.ToString("dd/MM/yy");
        }

        private void textBox1_Enter(object sender, EventArgs e)
        {
            textBox1.Text = "";
            textBox1.ForeColor = Color.Black;
            
        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter) 
            {
                button1_Click(this, EventArgs.Empty);
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form3 ob3 = new Form3();
            ob3.Show();
        }

        private void richTextBox1_Enter(object sender, EventArgs e)
        {
            if (richTextBox1.Text == "Oписание задачи")
            {
                richTextBox1.ForeColor = Color.Black;
                richTextBox1.Enter -= richTextBox1_Enter;
                richTextBox1.Text = "";   
            }
            if (richTextBox1.Text == "")
            {
                richTextBox1.ForeColor = Color.Gray;
                richTextBox1.Enter += richTextBox1_Enter;
                richTextBox1.Text = "Oписание задачи";
                
            }
        }

        private void textBox1_Leave(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                textBox1.ForeColor = Color.Gray;
                textBox1.Enter += textBox1_Enter;
                textBox1.Text = "Создать задачу";
            }
            else
            {
                textBox1.Enter -= textBox1_Enter;
            }
        }

    }

Автор: infarch 16.6.2015, 13:05
А точнее? Что не так?

Автор: blackwitcher 16.6.2015, 13:13
Если переходить с одной textBox в другой textBox то начинается глюк

Автор: infarch 17.6.2015, 11:27
Запускать и тестировать мне, честно говоря, лень ) Но я подозреваю что проблема в постоянных манипуляциях с эвент хендлерами. Вот вам заготовка, посмотрите:
Код

        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (Control c in this.Controls)
            {
                if (c is TextBox)
                {
                    TextBox tb = (TextBox)c;
                    SetEmptyStyle(tb);
                    tb.Tag = true;
                    tb.Enter += tb_Enter;
                    tb.Leave += tb_Leave;
                }
            }
        }

        void tb_Enter(object sender, EventArgs e)
        {
            TextBox tb = sender as TextBox;
            if ((bool)tb.Tag)
                SetNormalStyle(tb);
        }

        void tb_Leave(object sender, EventArgs e)
        {
            TextBox tb = sender as TextBox;
            bool is_empty = string.IsNullOrEmpty(tb.Text);
            if (is_empty)
                SetEmptyStyle(tb);
            tb.Tag = is_empty;
        }

        private void SetNormalStyle(TextBox tb)
        {
            tb.ForeColor = Color.Black;
            tb.Text = string.Empty;
        }

        private void SetEmptyStyle(TextBox tb)
        {
            tb.ForeColor = Color.Gray;
            tb.Text = "Enter something";
        }


Находим все текстбоксы формы и учим их менять стиль когда они не в фокусе и пустые. не самый лучший пример конечно, тут надо в сторону data binding копать. Но для старта сойдет )

Автор: blackwitcher 17.6.2015, 11:50
Спасибо smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)