Hallo,
ich habe ein Menü mit mehreren Buttons die ich bei bestimmten Bedingungen undabhängig voneinadner disable. Nun möchte ich das TROTZ das enable auf flase steht, der ToolTip angezeigt wird, um dem Benutzer anzuzeigen, warum es daktiviert ist (weil eine Datei fehlt oder erkeine Rechte hat). Gibt es da eine Möglichkeit? So wie ich das verstehe ist die ShowAlways-Eigenschaft keine Lösung, weil es sich auf den Enablewert das übergeordneten Fensters bezieht und nicht auf den des Steuerelementes.
Danke im Voraus.
Gruß David
also bei mir werden tooltips für buttons in der menüleiste angezeigt selbst wenn diese deaktiviert sind.
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Und für normale buttons?
dann nicht, aber ich dachte du hast ein menü?
ich habe ein Menü mit mehreren Buttons
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Buttons, bei denen "Enabled = true" festgelegt ist, rufen keine Maus-Events auf. Das ToolTip weiß daher nicht, wann der Mauszeiger über dem deaktivierten Button ist.
Man kann das Form.MouseMove-Event abonnieren und prüfen, ob der Mauszeiger über dem Button ist. Dann wird das ToolTip gegebenenfalls angezeigt.
Button button; // deaktivierter Button
bool visible; // Gibt an, ob das ToolTip sichtbar ist
void Form1_MouseMove(object sender, MouseEventArgs e)
{
// Mauszeiger über dem Button?
bool isover = this.GetChildAtPoint(e.Location) == this.button;
if (isover && !visible)
{
// ToolTip anzeigen
this.tip.Show("Wird doch angezeigt!", this.button, 0, 0);
visible = true;
}
else if(!isover && visible)
{
// ToolTip sichtbar und Mauszeiger nicht über dem Button -> ToolTip verstecken
this.tip.Hide(button);
visible = false;
}
}
das hab ich auch gerade rausgefunden.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication3
{
public partial class Form1 : Form
{
bool IsShown = false;
ToolTip toolTip1;
public Form1()
{
InitializeComponent();
toolTip1 = new ToolTip();
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
toolTip1.SetToolTip(this.button1, "ich bin ein tooltip");
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
Control ctrl = this.GetChildAtPoint(e.Location);
if (ctrl != null)
{
if (ctrl == this.button1 && !IsShown)
{
string tipstring =
this.toolTip1.GetToolTip(this.button1);
this.toolTip1.Show(tipstring, this.button1,
this.button1.Width / 2, this.button1.Height / 2);
IsShown = true;
}
}
else
{
this.toolTip1.Hide(this.button1);
IsShown = false;
}
}
}
}
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Okay, danke euch beiden.
Gruß David