Laden...

SaveFile Dialog - Frage zum Überschreiben einer exist. Datei kommt erst nach Druck der "Alt"-Taste

Erstellt von Kaladial vor 6 Jahren Letzter Beitrag vor 6 Jahren 4.272 Views
K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren
SaveFile Dialog - Frage zum Überschreiben einer exist. Datei kommt erst nach Druck der "Alt"-Taste

Hallo,

ich habe ein Problem mit dem Standart Save File Dialog von C#.
Und zwar ist es so, das wenn ich versuche eine Datei zu überschreiben, kommt die Frage
ob ich die Datei überschreiben möchte erst, nachdem ich die Taste "Alt" gedrückt habe.

Was könnte das sein?

Ich hatte das auch schon mal bei einer MessageBox die ich mit YES / NO Buttons und nem MessageBox Icon versehen hab, aber dort funktioniert das jetzt wieder.

Was kann da die Ursache sein?

Mfg Kaladial

1
124 Beiträge seit 2012
vor 6 Jahren

Hallo,

deine Fragestellung hilft nicht wirklich weiter.

Die Meldung kommt ja erst nach dem bestätigen des Dialoges, wenn man eine bestehende Datei ausgewählt hat.
Wie ist dein SaveFile Dialog konfiguriert? (Ein Stück Code wäre nicht schlecht)

Gruß

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

Der Aufruf:

            string file = "";
            sFDLabel.Filter = "Label|*.xml";
            sFDLabel.InitialDirectory = MainWindow.HomeDirectory + "\\Labels\\";

            DialogResult res2 = sFDLabel.ShowDialog(this);

Parameter:
siehe Anhang

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

Also ich versuche in diesem Dialog eine Datei zu überschreiben.
Wenn ich auf Speichern klicke passiert nichts

Anhang der Dialog

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

Dann irgendwann nach beliebiger Zeit drücke ich die Taste "ALT" und dann kommt:

siehe anhang.

Wieso muss ich ALT drücken?

1.040 Beiträge seit 2007
vor 6 Jahren

Das Fenster mit der Frage scheint im Hintergrund aufzugehen. Mit dem Drücken der ALT-Taste bekommt es den Fokus und rückt in den Vordergrund.

2.207 Beiträge seit 2011
vor 6 Jahren

Hallo Kaladial,

kann es sein, dass die Meldung im Hintergrund ist und durch Drücken der ALT-Taste nur nach vorne geholt wird?

Gruss

Coffeebean

PS: Ahhh zu langsam 😉

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

durchaus möglich...
aber wieso ist die im hintergrund?
und wie ändere ich das?

also was ich jetzt sagen kann (hab grad kopfhörer aufgesetzt und es gehört)
es pingt wenn ich auf speichern klicke und ich kann den "SaveDialog" nicht bewegen oder so

2.207 Beiträge seit 2011
vor 6 Jahren

Hallo Kaladial,

machst du sowas hier

SaveFileDialog.OverwritePrompt Property?

Gruss

Coffeebean

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

hmmm jetzt kommt gar keine Frage mehr....

hmmm in dem Fall auch ok. Danke.

2.207 Beiträge seit 2011
vor 6 Jahren

Hallo Kaladial,

hast du mal einen anderen Dialog probiert, eventuell in einer neuen Solution und geschaut, ob der sich genauso verhält? Dann kannste ja vergleichen.

Gruss

Coffeebean

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

ähm, naja wie soll ich sagen 😃
ich weiß nicht wie das geht.

also ich hab vs2013. ka wo ich da in ner neuen solution nachschauen soll.
bzw ich bin noch gar nicht auf die idee gekommen das es da etwas anderes gibt.

2.207 Beiträge seit 2011
vor 6 Jahren

Hallo Kaladial,

ich meinte einfach nur eine neue Visual Studio Instanz aufmachen und mal den Minimalcase nachbauen. [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden

File --> New Project --> WinForms etc.

Gruss

Coffeebean

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

achso...
ja ok ich war jetzt echt verwirrt was du von mir wolltest...

also ich hab in dem letzten halben jahr 5 verschiedene programme geschrieben.
das hier ist die erste in der dieser fehler auftritt.

aber ich habs eben ausprobiert.
im Testprogramm tritt das nicht auf.

ich versteh nur nicht so ganz was da dazwischen funken soll.
hab keine BackgroundWorker oder dergleichen laufen...

Das einzigste was ich hab sind Mouse Events bei bestimmten Controls.
Aber da hab ich mir ausgaben gebaut.
dort kommt er nicht lang.

2.207 Beiträge seit 2011
vor 6 Jahren

Hallo Kaladial,

aber ich habs eben ausprobiert.
im Testprogramm tritt das nicht auf.

Hast du mal die Properties verglichen?

Gruss

Coffeebean

1
124 Beiträge seit 2012
vor 6 Jahren

Was passiert denn, wenn du ein anderes Fenster über deine Anwendung legst?
Verschwindet das auch in den Hintergrund?

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

Coffeebean: ja sind die selben

123thomas: nein

1.040 Beiträge seit 2007
vor 6 Jahren

Kannst du das Projekt mal zur Verfügung stellen?

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

das geht leider nicht ,

aber ich hab noch etwas anderes gefunden, vielleicht ist das auch für dieses problem verantwortlich:

also es ist im endeffekt ein labeldesigner für einen industriedrucker.
heißt ich habe eine grundfläche auf dem ich text code128 und datamatrix objekte an bestimmten positionen positionieren will um das dann auf dem drucker abzuspeichern.

um diese elemente darzustellen habe ich Labels benutzt und die natürlich auch in 90Grad Schritten drehbar gemacht. wenn ich also objekte im 0 Grad darstelle kommt die meldung beim Save Dialog.

wenn ich sie im 90Grad gedrehten darstelle muss ich die alt taste drücken.

darauf bin ich gekommen weil ich tool tips einbauen wollte und auch da: solange ich bei 0 grad bleibe ist alles schön, sobald ich auf 90 grad geh verschwinden die tooltips.

ich würde mal die label-klasse posten.
ich denk die ist dran schuld.


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace NovexxLabelEditor.PinterObjects
{
    public class PrintObjectCode128 : System.Windows.Forms.Label
    {
        int puid = 0;
        string ptype = "Code 128";
        string pfont = "";
        int protateangle = 0;
        string pnewText = "";
        int pwidth = 0;
        int pheight = 0;
        int pgroesse = 48;
        bool prahmen = true;

        public FormPropsCode128 formProperties;

        #region properties region
        public int PoUid
        {
            get
            {
                return this.puid;
            }
            set
            {
                this.puid = value;
            }
        }
        public int PoRotateAngle
        {
            get
            {
                return this.protateangle;
            }
            set
            {
                this.protateangle = value;
            }
        }
        internal string PoName
        {
            get
            {
                return this.Name;
            }
            set
            {
                this.Name = value;
            }
        }
        internal string PoType
        {
            get
            {
                return this.ptype;
            }
            set
            {
                this.ptype = value;
            }
        }
        internal string PoNewText
        {
            get
            {
                return this.pnewText;
            }
            set
            {
                this.pnewText = value;
            }
        }
        internal string PoText
        {
            get
            {
                return this.Text;
            }
            set
            {
                this.Text = value;
            }
        }
        internal string PoFont
        {
            get
            {
                return this.pfont;
            }
            set
            {
                this.pfont = value;
            }
        }
        internal Point PoPos
        {
            get
            {
                return this.Location;
            }
            set
            {
                this.Location = value;
            }
        }
        internal Size PoSize
        {
            get
            {
                return this.Size;
            }
            set
            {
                this.Size = value;
            }
        }
        public bool PoRahmen
        {
            get
            {
                return this.prahmen;
            }
            set
            {
                this.prahmen = value;
            }
        }
        public int PoWidth
        {
            get
            {
                return this.pwidth;
            }
            set
            {
                this.pwidth = value;
            }
        }
        public int PoHeight
        {
            get
            {
                return this.pheight;
            }
            set
            {
                this.pheight = value;
            }
        }
        public int PoGroesse
        {
            get
            {
                return this.pgroesse;
            }
            set
            {
                this.pgroesse = value;
            }
        }
        #endregion

        public PrintObjectCode128()
        {
            formProperties = new FormPropsCode128(this);
        }

        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            string NewText = this.Text;
            double groesse = (double)this.pgroesse;
            groesse = groesse + 0.25;
            this.Font = new System.Drawing.Font("Code 128", (float)groesse, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            if (this.prahmen)
            {
                this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
            }
            else
            {
                this.BorderStyle = System.Windows.Forms.BorderStyle.None;
            }

            if (this.PoRotateAngle == 0)
            {
                this.TextAlign = ContentAlignment.MiddleLeft;
                this.Size = new System.Drawing.Size(this.pwidth, this.pheight);
                base.OnPaint(e);
            }

            if (this.PoRotateAngle == 90)
            {
                this.TextAlign = ContentAlignment.MiddleLeft;
                this.Text = "";

                Graphics g = e.Graphics;
                StringFormat stringFormat = new StringFormat();
                stringFormat.Trimming = StringTrimming.None;
                Brush textBrush = new SolidBrush(this.ForeColor);
                Matrix storedState = g.Transform;
                g.RotateTransform(this.PoRotateAngle);
                g.TranslateTransform(0, -this.pheight);
                Rectangle r = new Rectangle(0, 0, this.pwidth, this.pheight);
                g.DrawString(NewText, this.Font, textBrush, r, stringFormat);
                g.Transform = storedState;

                this.Size = new System.Drawing.Size(this.pheight, this.pwidth);                
                base.OnPaint(e);
            }

            if (this.PoRotateAngle == 180)
            {
                this.TextAlign = ContentAlignment.MiddleCenter;
                this.Text = "";

                Graphics g = e.Graphics;
                StringFormat stringFormat = new StringFormat();
                stringFormat.Trimming = StringTrimming.None;
                Brush textBrush = new SolidBrush(this.ForeColor);
                Matrix storedState = g.Transform;
                g.RotateTransform(this.PoRotateAngle);
                g.TranslateTransform(-this.pwidth, -this.pheight);
                Rectangle r = new Rectangle(0, 0, this.pwidth, this.pheight);
                g.DrawString(NewText, this.Font, textBrush, r, stringFormat);
                g.Transform = storedState;

                this.Size = new System.Drawing.Size(this.pwidth, this.pheight);
                base.OnPaint(e);
            }

            if (this.PoRotateAngle == 270)
            {
                this.TextAlign = ContentAlignment.MiddleCenter;
                this.Text = "";

                Graphics g = e.Graphics;
                StringFormat stringFormat = new StringFormat();
                stringFormat.Trimming = StringTrimming.None;
                Brush textBrush = new SolidBrush(this.ForeColor);
                Matrix storedState = g.Transform;
                g.RotateTransform(-90);
                g.TranslateTransform(-this.pwidth, 0);
                Rectangle r = new Rectangle(0, 0, this.pwidth, this.pheight);
                g.DrawString(NewText, this.Font, textBrush, r, stringFormat);
                g.Transform = storedState;

                this.Size = new System.Drawing.Size(this.pheight, this.pwidth);
                base.OnPaint(e);
            }
            
            this.Text = NewText;
        }
    }
}

4.931 Beiträge seit 2008
vor 6 Jahren

Hallo,

direkt läßt sich aus dem Code nicht entnehmen, warum es zu diesem Verhalten kommt.
Generell ist aber die OnPaint-Methode falsch implementiert: in dieser sollten nur reine Zeichenmethoden aufgerufen werden, keine Änderungen von Eigenschaften o.ä. (denn diese rufen intern wiederum weitere Ereignisse auf).
Packe also alle logischen Abfragen und Zuweisungen in die Setter der entsprechenden Eigenschaften (denn dafür sind diese da).
Also u.a. Font-Zuweisung in den Konstruktor, BorderStyle in die Eigenschaft PoRahmen, ...

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

hmmm ich hab das zum test einfach auskommentiert.
hat aber nicht wirklich was gebracht....
auch die geschichte das es bei 0 grad ja funktioniert spricht da dagegen das die parameter setzen schuld sind.

also ich denk eher das hier irgendwas falsch läuft


            if (this.PoRotateAngle == 90)
            {
                this.TextAlign = ContentAlignment.MiddleLeft;
                this.Text = "";

                Graphics g = e.Graphics;
                StringFormat stringFormat = new StringFormat();
                stringFormat.Trimming = StringTrimming.None;
                Brush textBrush = new SolidBrush(this.ForeColor);
                Matrix storedState = g.Transform;
                g.RotateTransform(this.PoRotateAngle);
                g.TranslateTransform(0, -this.pheight);
                Rectangle r = new Rectangle(0, 0, this.pwidth, this.pheight);
                g.DrawString(NewText, this.Font, textBrush, r, stringFormat);
                g.Transform = storedState;

                this.Size = new System.Drawing.Size(this.pheight, this.pwidth);
                base.OnPaint(e);
            }

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

Moin

so ich hab die funktionalität mal in nen kleines Test Projekt ausgelagert.

Funktion:

Mit Button erstellen wird ein Label auf einem Panel erstellt.
Der Button Drehen dreht diese Objekte um 90 Grad.
Mit der Linken Maustaste auf die Objekte: Kann man die Objekte frei verschieben

Das Problem:
Die beiden Buttons Drehen und Erstellen haben Tooltips.
Diese funktionieren nur wenn die Objekte bei 0 Grad sind.
Sobald sie bei 90 / 180 / 270 Grad sind funktionieren die Tooltips nicht mehr.

Kann mir da jemand erklren wieso?

Mfg Kala

1.040 Beiträge seit 2007
vor 6 Jahren

Ein Problem an deinem Code ist, dass das OnPaint() nach einem Klick auf "Drehen" ständig aufgerufen wird.

if (this.PoRotateAngle == 90)
{
    ...
    this.Text = "";
    ...
}
this.Text = NewText;

Das bewirkt ein ständiges neu zeichnen! Quasi eine Endlosschleife.

Deswegen nochmal der Verweis auf die Antwort von Th69:

Hallo,

direkt läßt sich aus dem Code nicht entnehmen, warum es zu diesem Verhalten kommt.
Generell ist aber die OnPaint-Methode falsch implementiert: in dieser sollten nur reine Zeichenmethoden aufgerufen werden, keine Änderungen von Eigenschaften o.ä. (denn diese rufen intern wiederum weitere Ereignisse auf).
Packe also alle logischen Abfragen und Zuweisungen in die Setter der entsprechenden Eigenschaften (denn dafür sind diese da).
Also u.a. Font-Zuweisung in den Konstruktor, BorderStyle in die Eigenschaft PoRahmen, ...

EDIT sagt noch: warum setzt du die Text-Property überhaupt jedes Mal neu? Die TextAlign-Property ebenso, ändert sich doch sowieso nie...

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

@pille: an deiner antwort sieht man das du das projekt nicht einmal ausgeführt hast oder?
ist nicht böse gemeint aber: ich schreib doch nicht quellcode in mein programm weil ich da grad lust zu hab ...
lass doch einfach mal das this.Text = ""; weg (auskommentieren) und führ die software aus.
wenn du mir dann noch erklärst wie ich den dann auftretenden text-kauderwelsch weg bekomme,
dann wäre mir geholfen.

und auch die geschichte mit den parametern alles schön und gut funktioniert aber zum einen und wenn ich es weg nehme ändert sich trotzdem nix an dem problem. und der textalign war mal dynamsch ist aber derzeit fix. hatte damit nur rumgespielt.

1.040 Beiträge seit 2007
vor 6 Jahren

@pille: an deiner antwort sieht man das du das projekt nicht einmal ausgeführt hast oder?

Da muss ich dich enttäuschen, ich habe das Projekt runtergeladen, entpackt, geöffnet, gestartet und mir das Verhalten angeschaut. Danach habe ich einen Breakpoint im 90-if gesetzt und gesehen, dass der Debugger da nie mehr raus kommt. Alles, um dir zu helfen.

Dass du Code aus lauter Langeweile schreibst, habe ich zu keiner Zeit behauptet. Trotzdem löst eben das ständige Setzen des Textes deine Probleme aus.

Den Text-Kauderwelsch bekommst du übrigens weg, wenn du das base.OnPaint() weglässt - das führt ja die Standardzeichenaktion durch.

Kurz: this.Text = ... und base.OnPaint(e); auskommentieren und alles läuft wie gewünscht.

und auch die geschichte mit den parametern alles schön und gut funktioniert aber zum einen und wenn ich es weg nehme ändert sich trotzdem nix an dem problem. und der textalign war mal dynamsch ist aber derzeit fix. hatte damit nur rumgespielt.

Dazu noch kurz ein, zwei generelle Sätze.
Es mag sein, dass es am Verhalten nichts ändert. Trotzdem sollte man immer minimalistisch programmieren und nur das tun, was man wirklich benötigt. Das hilft u.a. dabei, a) den Überblick zu behalten und b) die Fehlerquelle einzugrenzen.
Das ist einfach ein Tipp und muss nicht gleich abgebügelt werden.

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

siehste die info mit dem base.OnPaint hat aber gefehlt 😃

kannst du mir erklären warum ich bei 0 grad das base.OnPaint drin lassen muss?
Wenn ich das raus nehme wird kein Text mehr angezeigt.

1.040 Beiträge seit 2007
vor 6 Jahren

Da zeichnest du nicht selbst, logisch oder? 😉

siehste die info mit dem base.OnPaint hat aber gefehlt 🙂

Jein. Das war ja nur ein Folgeproblem. Dein Problem war das Verschwinden der Tooltips und daran war einfach das ständige Setzen des Textes Schuld. Unabhängig davon, ob man base.OnPaint auskommentiert oder nicht, ist es grundsätzlich falsch, die Text-Property im OnPaint zu verändern (vor allem wenn man es immer 2x macht).

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

heißt also da muss es drin bleiben?

1.040 Beiträge seit 2007
vor 6 Jahren

Die Frage kannst du dir mit Logik alleine beantworten. =)

Prüfe dann mal bitte, ob die Ausgangsproblematik behoben ist.

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

ok ich habs so erstmal eingebaut und es geht.
aber ich hab noch ein kleines problem mit meinen Datamatrix - Objekt.
Hier wird in meinem Code in der On Paint folgendes gemacht:


            if (this.PoRotateAngle == 0)
            {
                this.Size = new System.Drawing.Size(width, height);
                this.Image = ResizeImage(global::LabelEditor.Properties.Resources.Dmax_0grad, width, height);
                base.OnPaint(e);
            }

            if (this.PoRotateAngle == 90)
            {
                this.Size = new System.Drawing.Size(width, height);
                this.Image = ResizeImage(global::LabelEditor.Properties.Resources.Dmax_90grad, width, height);
                //base.OnPaint(e);
            }

            if (this.PoRotateAngle == 180)
            {
                this.Size = new System.Drawing.Size(width, height);
                this.Image = ResizeImage(global::LabelEditor.Properties.Resources.Dmax_180grad, width, height);
                base.OnPaint(e);
            }

            if (this.PoRotateAngle == 270)
            {
                this.Size = new System.Drawing.Size(width, height);
                this.Image = ResizeImage(global::LabelEditor.Properties.Resources.Dmax_270grad, width, height);
                //base.OnPaint(e);
            }        

Das Problem dabei: wenn ich da das OnPaint weg lasse, wird das Image nicht mehr angezeigt.

@pille: ja ist es 😃 davon bin ich auch ausgegangen, nur funktioniert das halt bei den DMAX objekten noch nicht

2.207 Beiträge seit 2011
vor 6 Jahren

Hallo Kaladial,

ist das Problem "SaveFile Dialog - Frage zum Überschreiben einer exist. Datei kommt erst nach Druck der "Alt"-Taste " also hiermit gelöst?

Gruss

Coffeebean

1.040 Beiträge seit 2007
vor 6 Jahren

Tut mir leid, aber du hast gerade ein grundsätzliches Verständnisproblem.

Entweder du zeichnest selbst oder du nutzt die Standardzeichenfunktion (base.OnPaint).
Wenn beides fehlt, siehst du natürlich nichts.

Nichtsdestotrotz nochmal der Hinweis auf den Post von Th69. Das Setzen der Size und des Image gehört nicht in das OnPaint()!

4.931 Beiträge seit 2008
vor 6 Jahren

Dann hier noch der Hinweis auf [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox), also am besten statt dem Label einfach ein Panel benutzen und selber dann das Bild und den Text zeichnen.

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

der Fehler lässt sich mit Hilfe deines Projekts in der Tat reproduzieren bei mir - sobald du selbst mit dem Zeichnen anfängst.

Grundlegend:
Du zeichnest anders, wie das Label das per Default tut - merklich anders.
Tipp: Zeichne auch ohne Rotation selbst - dann sieht es zumindest einheitlich aus.

Des Weiteren:
Von Label abzuleiten bringt dir doch hier überhaupt gar nichts - das Label versaut dir aber komplett die Anzeige, weshalb du dauernd dieses .Text = "xyz"-Gefrickel machst - noch dazu im OnPaint - das löst ständig ein "Invalidate", damit ein neues "OnPaint" - und damit die Endlosschleife aus - was auch der Auslöser für dein seltsames Verhaltens ist, weshalb du Pille und die Anderen durchaus ernst nehmen solltest.

Nur mal als Beispiel eine etwas abgespeckte Version von dem was du vorhast.
Auch als Hilfe, dass man durchaus bequem "normal" zeichnen kann und danach das Image die Rotation durchführen lässt...


public class PrintObjectLabel2 : System.Windows.Forms.Control
    {
        private bool _enableBorder;
        private int _rotationAngle;
        private Color _borderColor;

        public override string Text
        {
            get => base.Text;
            set
            {
                var txt = value?.Replace("\\", ""); 
                base.Text = txt;// base.Text will raise Invalidate automatically
            }
        }

        public bool EnableBorder
        {
            get => _enableBorder;
            set
            {
                _enableBorder = value;
                Invalidate();
            }
        }

        public Color BorderColor
        {
            get => _borderColor;
            set
            {
                _borderColor = value;
                if (EnableBorder)
                    Invalidate();
            }
        }

        public int RotationAngle
        {
            get => _rotationAngle;
            set
            {
                _rotationAngle = value;
                Invalidate();
            }
        }

        public PrintObjectLabel2()
        {
            EnableBorder = true;
        }

        public int PoUid { get; set; }

        public string PoType { get; set; }

        public string PoFont { get; set; }

        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            var txt = e.Graphics.MeasureString(Text, this.Font);

            using (var bmp = new Bitmap((int) txt.Width + 1, (int) txt.Height + 1))
            {
                using (var bmpGraphics = Graphics.FromImage(bmp))
                {
                    if (EnableBorder)
                    {
                        using (var pen = new Pen(Color.Black))
                        {
                            bmpGraphics.DrawRectangle(pen, new Rectangle(0, 0, bmp.Width-1, bmp.Height-1));
                        }
                    }
                    bmpGraphics.DrawString(Text, Font, Brushes.Black, new RectangleF(0,0, bmp.Width, bmp.Height));
                }

                if (RotationAngle == 0)
                {
                    bmp.RotateFlip(RotateFlipType.RotateNoneFlipNone);   
                }
                else if (RotationAngle == 90)
                {
                    bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
                }
                else if (RotationAngle == 180)
                {
                    bmp.RotateFlip(RotateFlipType.Rotate180FlipNone);
                }
                else if (RotationAngle == 270)
                {
                    bmp.RotateFlip(RotateFlipType.Rotate270FlipNone);
                }
                e.Graphics.DrawImageUnscaled(bmp, 0, 0);
            }
        }
    }

LG

K
Kaladial Themenstarter:in
54 Beiträge seit 2017
vor 6 Jahren

            if (this.PoRotateAngle == 0)
            {
                this.Size = new System.Drawing.Size(width, height);
                Image imageTmp = ResizeImage(global::LabelEditor.Properties.Resources.Dmax_0grad, width, height);
                Graphics g = e.Graphics;
                Point p = new Point(1,1);
                g.DrawImage(imageTmp, p);
            }

            if (this.PoRotateAngle == 90)
            {
                this.Size = new System.Drawing.Size(width, height);
                Image imageTmp = ResizeImage(global::LabelEditor.Properties.Resources.Dmax_90grad, width, height);
                Graphics g = e.Graphics;
                Point p = new Point(1, 1);
                g.DrawImage(imageTmp, p);
            }

            if (this.PoRotateAngle == 180)
            {
                this.Size = new System.Drawing.Size(width, height);
                Image imageTmp = ResizeImage(global::LabelEditor.Properties.Resources.Dmax_180grad, width, height);
                Graphics g = e.Graphics;
                Point p = new Point(1, 1);
                g.DrawImage(imageTmp, p);
            }

            if (this.PoRotateAngle == 270)
            {
                this.Size = new System.Drawing.Size(width, height);
                Image imageTmp = ResizeImage(global::LabelEditor.Properties.Resources.Dmax_270grad, width, height);
                Graphics g = e.Graphics;
                Point p = new Point(1, 1);
                g.DrawImage(imageTmp, p);
            }        

so damit gehts.
und damit ist mein Problem auch gelöst.
Sowohl Alt Taste als auch Tooltip

thx