Usuário com melhor resposta
Exibir Informações ao passar mouse

Pergunta
-
Olá pessoal,
Estou desenvolvendo um programa, e preciso exibir algumas informações que serão lidas de um banco de dados. Porém essas informações terão que aparecer como uma nova janela, que deve aparecer ao lado do mouse e somente enquanto o mouse ficar em cima de um botão específico (também poderia ser outra coisa ao invés de um botão).
Isso que eu estou querendo funcionaria da seguinte forma: Tenho um botão que vai representar uma sala de aula, e ao passar o mouse em cima desse botão será exibido uma janela com o professor que está dando aula no momento, a quantidade de alunos dentro da sala, o horário inicial e final da aula e também o tempo restante de aula.
essas informações ficarão a mostra em uma janela de localidade fixa e irá desaparecer se eu tirar o mouse da área desse botão.
Obrigado!
- Editado Gabriel de Moura Braga sexta-feira, 10 de julho de 2015 23:06
Respostas
-
Segue abaixo um pequeno exemplo de como tu poderia fazer.
public Form1() { InitializeComponent(); } private Form2 _form; private void button1_MouseEnter(object sender, EventArgs e) { var button = sender as Button; var buttonLocation = button.Location; _form = new Form2(); _form.StartPosition = FormStartPosition.Manual; _form.Location = PointToScreen(new Point(buttonLocation.X + button.Width, buttonLocation.Y + button.Height)); _form.Show(); this.Focus(); _form.BringToFront(); } private void button1_MouseLeave(object sender, EventArgs e) { _form.Close(); _form.Dispose(); }
Caso você não queira que a borda do form e os botões de minimizar, maximizar e fechar apareçam, você pode sertar a propriedade FormBorderStyle no form para None.
- Editado Bruno Maschio Joaquim sábado, 11 de julho de 2015 13:36
- Marcado como Resposta Gabriel de Moura Braga sábado, 11 de julho de 2015 17:46
Todas as Respostas
-
-
-
Segue abaixo um pequeno exemplo de como tu poderia fazer.
public Form1() { InitializeComponent(); } private Form2 _form; private void button1_MouseEnter(object sender, EventArgs e) { var button = sender as Button; var buttonLocation = button.Location; _form = new Form2(); _form.StartPosition = FormStartPosition.Manual; _form.Location = PointToScreen(new Point(buttonLocation.X + button.Width, buttonLocation.Y + button.Height)); _form.Show(); this.Focus(); _form.BringToFront(); } private void button1_MouseLeave(object sender, EventArgs e) { _form.Close(); _form.Dispose(); }
Caso você não queira que a borda do form e os botões de minimizar, maximizar e fechar apareçam, você pode sertar a propriedade FormBorderStyle no form para None.
- Editado Bruno Maschio Joaquim sábado, 11 de julho de 2015 13:36
- Marcado como Resposta Gabriel de Moura Braga sábado, 11 de julho de 2015 17:46
-
Perfeito Bruno,
Muito Obrigado!!!!!
Resolveu totalmente o que eu queria!!! Até a propriedade "FormBorderStyle: None" eu iria precisar!
Só que está acontecendo uma coisa estranha...
Quando eu chego com o mouse na borda da direita do botão (exatamente em sua extremidade) o form principal começa a piscar como se tivesse exibindo e fechando o outro form repetidamente.
Sabe me dizer algo sobre isso?
- Editado Gabriel de Moura Braga sábado, 11 de julho de 2015 17:55
-
Tentei reproduzir seu problema aqui e não consegui, tenta fazer o seguinte, aumenta um pouco o offset em relação a posição do botão.
_form.Location = PointToScreen(new Point(buttonLocation.X + button.Width + 10, buttonLocation.Y + button.Height + 10));
-