Laden...

MessageBox-Kopie aber zum beeinflussen

Erstellt von Robertico vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.924 Views
R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 14 Jahren
MessageBox-Kopie aber zum beeinflussen

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. 😁

R
Robertico Themenstarter:in
344 Beiträge seit 2006
vor 14 Jahren

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;
            }