[c# VS2005] wie kann man festsstellen ob der Button.Text zu lang ist?

Reticent

Erfahrenes Mitglied
Hallo,


eigentlich möchte den Effekt erreichen welcher z.B. bei VS2005 in Eigenschaftenpanel für den zu langen Text funktioniert. D.h. wenn eine Textzeile nicht ganz angezeigt werden kann und wenn man auf ihn mit dem Mauszeiger fährt, erscheint dann ein Tooltip mit dem kompletten Text.

Das möchte ich gerne für meine dynamisch erstellbare Buttons haben. Weiss jemand wie das geht?


Danke
 
Zuletzt bearbeitet:
Festsstellen ob der Button.Text zu lang ist und ggf. einen ToolTip Anzeigen

Schau doch mal in diesen [thread=257303][VC++ 2005] Font Größe - Thread[/thread].
Darin findest eine Demo von mir in C#, wo Du dir ein paar Anregungen holen kannst...

Du musst von Button ableiten und die Ereignisse
  • OnTextChanged
  • OnSizeChanged
überschreiben, darin dann die Größe des Textes auslesen und gegebenenfalls einen Tooltip anzeigen.
Den ToolTip definierst als static innerhalb der abgeleiteten Klasse,
damit Du nicht für jeden ToolTip-Hinweis ein ToolTip Component im Speicher hast. ;)

Wenn Du noch einen extra ToolTip für deine Buttons setzen Willst,
kannst diesen viá eines Propertys einstellbar machen. Ungefähr so:
C#:
protected static ToolTip toolTip;
protected ToolTip toolTipUnique = null;

ToolTip ToolTipInternal {
	get {
		if( toolTipUnique == null )
			return toolTip;
		else return toolTipUnique;
	}
}


/// <summary>
/// Sets the ToolTip caption of the control. You can also add a custom ToolTip to the <see cref="ToolTipUnique"/> property.
/// </summary>
[Localizable(true)]
[Browsable(true), DefaultValue( "" ), Category( "Appearance" )]
public String ToolTipMessage {
	get {
		return ToolTipInternal.GetToolTip( this );
	}
	set {
		ToolTipInternal.SetToolTip( this, value );
	}
}


/// <summary>
/// Gets or sets an unique <see cref="ToolTip"/> for this control.
/// </summary>
[Localizable(false), Browsable(false)]
[CLSCompliant(false)]
public ToolTip ToolTipUnique {
	get { return toolTipUnique; }
	set {
		if( value != null ){
			string toolTipCaption = ToolTipInternal.GetToolTip( this );
			if( toolTipCaption != string.Empty ) {
				value.SetToolTip( this, toolTipCaption );
				ToolTipInternal.SetToolTip( this, string.Empty );
			}
		}
		toolTipUnique = value;
	}
}
 
Zurück