roker002
Commander
- Registriert
- Dez. 2007
- Beiträge
- 2.077
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ExtendedControls
{
[System.Windows.Forms.Design.ToolStripItemDesignerAvailability(System.Windows.Forms.Design.ToolStripItemDesignerAvailability.All)]
public class ExtToolStripButton : System.Windows.Forms.ToolStripControlHost
{
/// <summary>
/// Wurde ToolTip schon einmal gesetzt?
/// </summary>
private Boolean ToolTipSet = false;
/// <summary>
/// Der inner Controlelement was ToolStripControlHost beherrbergt.
/// </summary>
[System.ComponentModel.Category("Inner Button")]
[System.ComponentModel.Description("Der inner Controlelement was ToolStripControlHost beherrbergt.")]
public System.Windows.Forms.Button ToolStripButton
{
get
{
return this.Control as System.Windows.Forms.Button;
}
}
/// <summary>
/// Bestimmt, ob Element seine Größe auf der Basis seines Bildes und Textes automatisch ändern soll.
/// </summary>
[System.ComponentModel.Description("Bestimmt, ob Element seine Größe auf der Basis seines Bildes und Textes automatisch ändern soll.")]
public new Boolean AutoSize
{
get
{
return base.AutoSize;
}
set
{
base.AutoSize = value;
}
}
/// <summary>
/// ToolTipIcon dass für diese Element angezeigt werden sollte.
/// </summary>
[System.ComponentModel.Category("ToolTips")]
[System.ComponentModel.Description("Ermöglicht die Auswahl aus mehreren ToolTipsIcons pro Control.")]
public System.Windows.Forms.ToolTipIcon Icon { get; set; }
/// <summary>
/// Titel des ToolTips auf dem ToolStripButtons
/// </summary>
[System.ComponentModel.Category("ToolTips")]
[System.ComponentModel.Description("Erstellen eines ToolTips Titels für diesen Element.")]
[System.ComponentModel.Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(System.Drawing.Design.UITypeEditor))]
public System.String Title { get; set; }
/// <summary>
/// ToolTipText
/// </summary>
[System.ComponentModel.Category("ToolTips")]
[System.ComponentModel.Description("Eingaben eigenes ToolTips.")]
[System.ComponentModel.Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(System.Drawing.Design.UITypeEditor))]
public new System.String ToolTipText { get; set; }
/// <summary>
/// ToolTip was von der Klasse mitübergeben werden sollte.
/// </summary>
[System.ComponentModel.Category("ToolTips")]
[System.ComponentModel.Description("Weitervergabe der Extended ToolTip Klasse, um die Anzeige zu verbessern.")]
public ExtToolTips Ext { get; set; }
/// <summary>
/// ImageList für den Internen Button.
/// </summary>
[System.ComponentModel.Category("Inner Button")]
[System.ComponentModel.Description("ImageList für den internen Button des ToolStripButtons.")]
[System.ComponentModel.Browsable(true)]
public System.Windows.Forms.ImageList ImageList
{
get
{
return this.ToolStripButton.ImageList;
}
set
{
if (!value.Equals(this.ToolStripButton.ImageList))
this.ToolStripButton.ImageList = value;
}
}
/// <summary>
/// TextImageRelation für den Internen Button.
/// </summary>
[System.ComponentModel.Category("Inner Button")]
[System.ComponentModel.Description("TextImageRelation für den internen Button des ToolStripButtons.")]
[System.ComponentModel.Browsable(true)]
[System.ComponentModel.DefaultValue(false)]
public new System.Windows.Forms.TextImageRelation TextImageRelation
{
get
{
return this.ToolStripButton.TextImageRelation;
}
set
{
this.ToolStripButton.TextImageRelation = value;
}
}
/// <summary>
/// ImageKey für den Internen Button.
/// </summary>
[System.ComponentModel.Category("Inner Button")]
[System.ComponentModel.Description("ImageKey für den internen Button des ToolStripButtons.")]
[System.ComponentModel.Editor("System.Windows.Forms.Design.ImageIndexEditor, System.Design", typeof(System.Drawing.Design.UITypeEditor))]
[System.Windows.Forms.RelatedImageList("ImageList")]
[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.ImageKeyConverter))]
[System.ComponentModel.Browsable(true)]
public new System.String ImageKey
{
get
{
return this.ToolStripButton.ImageKey;
}
set
{
this.ToolStripButton.ImageKey = value;
}
}
/// <summary>
/// ImageIndex für den Internen Button.
/// </summary>
[System.ComponentModel.Category("Inner Button")]
[System.ComponentModel.Description("ImageIndex für den internen Button des ToolStripButtons.")]
[System.Windows.Forms.RelatedImageList("ImageList")]
[System.ComponentModel.Browsable(true)]
public new System.Int32 ImageIndex
{
get
{
return this.ToolStripButton.ImageIndex;
}
set
{
if (!int.Equals(value, this.ToolStripButton.ImageIndex))
this.ToolStripButton.ImageIndex = value;
}
}
/// <summary>
/// Erstellt einen ToolStrip Item das den Button als Control Element beinhaltet.
/// </summary>
public ExtToolStripButton() : base(new System.Windows.Forms.Button())
{
base.Paint += new System.Windows.Forms.PaintEventHandler(EventMouseHover);
}
private void EventMouseHover(Object sender, System.Windows.Forms.PaintEventArgs e)
{
///Sollte ToolTipText schon Initialisiert worden sein, dann beende die Anweisung.
if (this.ToolTipSet)
return;
if (this.Ext == null)
return;
//throw new Exception("Es wurde kein ToolTip Controlelement mitübergeben.", new ArgumentNullException("Ext", "Ext ist NULL"));
if (this.ToolTipText == null)
this.ToolTipText = String.Empty;
//throw new Exception("Es wurde kein Tip für den ToolTip mitübergeben.", new ArgumentNullException("Tip", "Tip ist NULL"));
if (this.Title == null)
this.Title = String.Empty;
//throw new Exception("Es wurde kein Titel für den ToolTip mitübergeben.", new ArgumentNullException("Title", "Title ist NULL"));
///Ist eigentlich egal wieviele male es versucht
///wird den Control zu setten, da er in der Liste eh
///nur ein mal vorhanden sein kann und wenn nötig um-
///geschrieben wird.
Ext.SetToolTip(base.Control, this.ToolTipText);
Ext.SetToolTipsIcon(base.Control, this.Icon);
Ext.SetToolTipsTitle(base.Control, this.Title);
this.ToolTipSet = true;
}
}
}
Den SourceCode kann ja jeder haben... da ich hier sowieso Poste...
In der erste Instanz wollte ich an den ToolStripButton einen ToolTip anhängen, was mein Programm nutzt, da es ja auch "Ext" = also Extended ToolTip ist, was eigenes aussehen hat.
Ich wollte über den GUI Editor den Button auch Images mitgeben lassen. Da mein Button in den Host Class eingebettet ist, funktioniert die einfache Zuweisung nicht. Der Editor überschreibt alles im Designer, wenn ich zum Editieren das Fenster aufmache. Über die eigene Methoden zur erstellung der ImageList und Keys für den eingebettet Button wollte ich auch nicht gehen, da es schon Teilweise ziemlich knapp mit Übersicht wird.
Mein Problem (falls jemand die Vorrede nicht lesen will

Ich habe schon Properties in der Klasse reingeschrieben, aber diese Tauchen im (GUI) Designer nicht auf.
Alle ToolTips und ImageList (die Klasse, in diesen Fall Property von dem Button) Kann ich im Designer beeinflüssen, aber (TextImageRelation, ImageKey, ImageIndex) werden nicht angezeigt. Ich habe schon überall herumgesucht, wie man die Properties sichtbar machen kann, aber nichts gefunden.
Habe ich da irgendwas falsches gemacht?
Zuletzt bearbeitet: