Beschreibung:
Mit ging wieder etwas auf die Nerven.
Hatte eine Anwendung, bei der zusätzlich ein Explorer benutzt wird.
Kommt ein Fehler vor, so starte ich eine MessageBox. Wie Windows es will, liegt die dann hinter dem Explorer und der Anwender sieht nur, dass sich nichts tut.
Mehr als die Messagebox wollte ich aber nicht. Nur deren Position bestimmen.
Habe ich nicht geschafft und daher habe ich dies gemacht. (War mehr oder weniger nur Fleißarbeit)
Es sind 6 Dateien, die man auch in eine packen könnte. Der Übersicht halber habe ich das aber gelassen.
*InterneForm.cs (mit Anhang)
*MessageBox.cs
*MessageBoxProperties.cs
*MessageBoxStatics.cs
*Statics.cs
Wenn man den Dateien den namespace seines Programms verpasst, so wird System.Windows.Forms.MessageBox überschrieben (o.ä)
Nachteil der ganzen Geschichte, man müsste sie in jeden namespace packen, in dem man sie braucht. Ansonsten ist es in den anderen namespaces nicht so komfortabel. Man müsste immer den namespace voranstellen in dem sie liegt.
Es ist erstmal nur eine Kopie der gewohnten MessageBox nur kann man hier z.B die Location bestimmen.
Teile, in denen man Sachen braucht mit denen ich noch nicht gearbeitet habe bzw. nicht arbeiten werde habe ich nicht gemacht. Da wird einfach das Original gestartet.
(Ab DefaultButton aufwärts) Obwohl ich den auch noch hinbekäme.
Ist natürlich jeder eingeladen dies zu ändern.
An den MessageboxButtons habe ich nichts geändert.
Die MessageboxIcons habe ich auch überschrieben.
Z.Zt noch ohne Wirkung, aber wenn jemand möchte kann er sich ein paar dazubauen.
enum MessageBoxIcon
{
None = 0,
Error = 16,
Hand = 16,
Stop = 16,
Question = 32,
Exclamation = 48,
Warning = 48,
Information = 64,
Asterisk = 64,
//Habe ich gemacht, damit man nach Wunsch andere anhängen kann
}
In der Form dazu ist ein Beispiel.
Für Anregungen, Kritik, Erweiterungen und Hilfe bin ich dankbar.
Gruß Robert
PS: Dazu hatte ich die Icons gebraucht aus dem vorhergehenden Snippet. 😁
MessageBoxIcon erweitern
Möchte man den alten Mülleimer dazu haben:
enum MessageBoxIcon
{
None = 0,
Error = 16,
Hand = 16,
Stop = 16,
Question = 32,
Exclamation = 48,
Warning = 48,
Information = 64,
Asterisk = 64,
// dies dranhängen
Mülleimer,
}
und
internal void SetIcon(MessageBoxIcon icon)
{
switch (icon)
{
case MessageBoxIcon.None:
tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 0);
break;
case MessageBoxIcon.Error:
tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
pictureBox1.Image = new Bitmap(Statics.StopIcon.ToBitmap(), 38, 38);
break;
case MessageBoxIcon.Question:
tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
pictureBox1.Image = new Bitmap(Statics.QuestionIcon.ToBitmap(), 38, 38);
break;
case MessageBoxIcon.Exclamation:
tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
pictureBox1.Image = new Bitmap(Statics.ExclamationIcon.ToBitmap(), 38, 38);
break;
case MessageBoxIcon.Information:
tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
pictureBox1.Image = new Bitmap(Statics.InformationIcon.ToBitmap(), 38, 38);
break;
// dies dranhängen
case MessageBoxIcon.Mülleimer:
tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
pictureBox1.Image = new Bitmap(Statics.GetLargeIcon(101).ToBitmap(), 38, 38);
break;
}