Habe gerade einen schönen BUG entdeckt:
Wenn ich die ToolTip Beschreibung per Designer eintrage (z.b. über die textBox-Eigenschaft "ToolTip auf toolTip1"), und dieser Beschreibungstext über mehrere Zeilen geht, dann kommt Visual Studio durcheinander und fügt falschen (automatischen)
Code ein.
Hier der Fehler am Beispiel:
Ich möchte an eine TextBox folgenden ToolTip Text haben:
Tragen Sie hier eine formatierte Zeichenfolge ein.
Zeichenformat: Bsp.: E7010001
E7 - Hardwarekennung
01 - Layout Revision
0001 - Firmwareversion
Füge ich diesen Text per Designer der Textbox hinzu, kompiliert alles ohne Fehler. Beim Starten des Programms kommt allerdings ein Fehler und das Programm stürzt ab. Fehlerbeschreibung "Eine nicht behandelte Ausnahme des Typs "System.Resources.MissingManifestResourceException"
ist in mscorlib.dll aufgetreten." Grund dafür ist, dass die automatische Codeerstellung vom Visual Studio folgenden Code erstellt hat:
this->toolTip1->SetToolTip(this->textBoxSerialTool, resources->GetString(L"textBoxSerialTool.ToolTip"));
Und da steckt auch der Fehler, im Parameter der GetString Methode. Scheint mir eine Art C#/CLI ausversehen in C++/CLI einfügen zu sein. Er erwartet eigentlich einen String, fügt aber eine Klassen-Eigeschaft ein, und das noch im C# Stil. Ändere
ich diese Code, und füge meinen ToolTip-Text hier per Hand ein, dann funktioniert alles wunderbar:
this->toolTip1->SetToolTip(this->textBoxSerialTool, L"Tragen Sie hier eine formatierte Zeichenfolge ein."
L"\r\nZeichenformat: Bsp.: E7010001"
L"\r\nE7 - Hardwarekennung"
L"\r\n01 - Layout Revision"
L"\r\n0001 - Firmwareversion");
Nur bringt es mir wenig, den Code per Hand zu ändern, da er jedes mal neu erstellt wird, sobald Visual Studio mit der automatischen Codeerstellung drüberbügelt (was ja sehr oft der Fall ist) ist alles wieder weg.