Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > StatusStrip отображение подсказок в нём


Автор: CasperSC 22.2.2010, 20:51
Вот к примеру у меня есть форма, на ней кнопка и внизу формы полоска StatusStrip, мне нужно, чтобы при наведении курсора мыши на кнопку в StatusStrip показывалась подсказка к этой кнопке (или StatusStrip -> toolStripStatusLabel). Может я чёто не так описал, просто я вообще не знаю как это реализовать, не прописывая на событие каждого объекта наведение мыши. Может там ещё нужен ToolTip? Как сделать подскажите пожалуйста.
http://imageban.ru

Автор: Ronin08 22.2.2010, 22:55
CasperSC, попробуй так 

Код

private void btn_1_MouseHover(object sender, EventArgs e)
        {
            if (sender.Equals(btn_1))
                tssl_btn.Text = "Большая кнопка";
            else if (sender.Equals(btn_2))
                tssl_btn.Text = "Поменьше кнопка";

        }

 private void btn_1_MouseLeave(object sender, EventArgs e)
        {
            tssl_btn.Text = "";

        }

tssl_btn это экземпляр StatusStrip -> toolStripStatusLabel
у каждой кнопки установи одно и тоже название для события MouseHover и MouseLeave
в моем примере это btn_1_MouseHover и  btn_1_MouseLeave для кнопки btn_1 и btn_2

Автор: CasperSC 22.2.2010, 23:05
На другом форуме подсказали так:
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            toolStripStatusLabel1.Text = String.Empty;
            
            //Динамически все контролы (нужные) подписываем на события "MouseEnter" и "MouseLeave"
            foreach (Control control in this.Controls)
            {
                if (control.Tag is string)
                {
                    control.MouseEnter += new EventHandler(toAll_MouseEnter);
                    control.MouseLeave += new EventHandler(toAll_MouseLeave);
                }
            }
        }

        private void toAll_MouseEnter(object sender, EventArgs e)
        {
            if (((Control)sender).Tag is String) //Ну можешь по другому проверки делать..
                toolStripStatusLabel1.Text = (string)((Control)sender).Tag;
        }

        private void toAll_MouseLeave(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = String.Empty;
        }
    }
}


Если на форме например TabControl и на его tabPage1 находятся нужные контролы, то так:
Код
foreach (Control control in this.tabPage1.Controls)


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