Main Window flackert

CopWorker

Mitglied
Hallo Spyke,

das weiß ich wohl, darin steckt auch noch ein Problem.
Bei diesem String handelt es sich um den Text, welcher im ErrorProvider im ToolTip ausgegeben wird.
Ohne ".ToString()" sieht der Inhalt des ToolTip wie folgt aus:
C#:
epInfo.SetError(lbInfo, "Error: Message is missing!");
Ausgabe--> !Error: Message is missing

Des letzte Zeichen vom String wird immer am Anfang ausgegeben.
Warum ist mir ein Rätsel.
Ich habe den hart codierten String auch über eine Variable vom Typ "string" übergeben.
Mit ".ToString()" erfolgt die Ausgabe korrekt.

Kapute Welt irgendwie.

Der Rest läuft wunderbar.
Wenn du noch ein Tipp für mich hast, gerne jederzeit.

Grüße von CopWorker
 

Spyke

Premium-User
Ich würde vermuten in deinem ersten Test hast du das Ausrufezeichen einfach vorne gehabt.
Auch wenn du dir die ToString Methode von String anschaust, da passiert nixs, er gibt sich selbst zurück.
C#:
public override string ToString()
{
    return this;
}
Es gibt so paar special sachen wie string gelesen werden sollen aber die finden sich eher in der C++ Welt.

Habs auch mal schnell nachgestellt, das verhalten hab ich auch nicht das Ausrufezeichen plötzlich vorne ist.
Ich vermute mal war ein kleiner Tippfehler.
 

Spyke

Premium-User
Dein Code machst du ja direkt in deinem WpcStarupView Form oder?
Dann musst du das Ereignis Load oder Shown nicht abonnieren.
Bei Microsoft gibt es eigentlich standardmäßig zu jedem Ereignis eine entsprechende On Methode.
In deinem Beispiel OnLoad und OnShown, von dennen könntest du direkt ableiten und dein Code rein packen.

z.B.:
C#:
protected override void OnShown(EventArgs e)
{
    if (_BLoadImage)
    {
        if (mySettings.Get("ShowErrorInfoGood"))
        {
            epInfo.Icon = Properties.Resources.Check_Good;
            epInfo.SetError(lbInfo, "The suitable image was successfully loaded".ToString());
        }
    }
    else
    {
        if (mySettings.Get("ShowErrorInfoBad"))
        {
            if (string.IsNullOrEmpty(_strMsg)) _strMsg = "Error: Message is missing!".ToString();
            epInfo.Icon = Properties.Resources.Check_Bad;
            epInfo.SetError(lbInfo, _strMsg);
        }
    }
    
    
    base.OnShown(e); //<--- wichtig weiterlaufen lassen damit andere, die das Form außerhalb verwenden, das Ereignis abonnieren/abfragen können
}
 

CopWorker

Mitglied
Hallo Spyke,

das habe ich jetzt so in meinen Code implementiert.
Verhält sich aber leider gleich, was den korrupten String anbetrifft.

Die Message stelle ich so zusammen:
C#:
_strMsg = string.Format("Current language \"{0}\" is faulty or not in list of \"*.ini\"", strCurrentLang);
Im ToolTip vom "ErrorPovider" erscheint die Message so:
"Current language "FRE" is faulty or not in list of "*.ini"

Ich vermute die Methode "Format" der String-Klasse kommt mit der
Escape-Sequenz am Ende des Strings nicht klar.
Füge ich noch mind. 1 Zeichen hinten an, dann funktioniert alles richtig
C#:
_strMsg = string.Format("Current language \"{0}\" is faulty or not in list of \"*.ini\" file", strCurrentLang);
Im ToolTip vom "ErrorPovider" erscheint die Message so:
Current language "FRE" is faulty or not in list of "*.ini" file

So mach ich das.
Trotzdem noch vielen Dank.

Ach übrigens, kennst du dich mit "BackgroundWorker" aus?
Der scheint bei mit überhaupt keine Wirkung zu zeigen.

Grüße von CopWorker