Hallo,
Ich habe mir einen eigenen Button in C# programmiert (abgeleitet von einem Control) und möchte nun auch, dass man diesem Button ein Bild verpassen kann.
Also habe ich ein Image als Member-Variable hinzugefügt und dann noch eine Property, damit man im Designer auch das Bild setzen kann. Das Problem ist allerdings, dass der Alpha-Channel nicht richtig funktioniert! Ich habe ein XP-Icon mit Alpha-Channel zum testen genommen und diese Icon wurde nicht richtig dargestellt!
Wenn ich aber statt bei meinem Button die Icon-Klasse nehme statt der Image-Klasse, dann sieht das Icon auch wieder richtig aus!
Was hat es denn mit dem blöden Alpha-Channel auf sich?
rafa,
rafa schrieb:
Die Funktionen als Methoden einer übergeordneten Klasse definieren halte ich für keinen schönen Stil...
nun ja, das ist zwar ungewohnt, macht sich bei der Verwendung aber kaum bemerkbar. Sind die Methoden statisch, wirkt die Klasse wie ein Namensraum:
MyCompany.Functions.Foo(object o);
Der entsprechende Aufruf aus einer C++-Bibliothek würde ähnlich aussehen.
Vielleicht hilft dir auch:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcwlkeventstutorial.asp
und
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcwlkdelegatestutorial.asp
weiter
Hi,
als erstes den string in die einzelnen Zeilen zerlegen.
Dann such das zeichen ">>" bis dahin is dann das Datum. Danach kommt der Name.
jetzt nächste zeile, das ist dann der Text.
Wenn dann noch ne Zeile kommt, wo was drinsteht, dann les das genauso aus.
Fink Christoph schrieb:
Hab schon länger kein C++ mehr geproggt und weiß nicht ob es da auch geht, aber in C# könntest du einfach das Form kopieren/rückkopieren:
Bei der Initialisierung:
Form2 f2 = new Form2();
f2.ShowDialog();
Speichern:
Form2 f2bak = f2;
Laden:
f2 = f2bak;
so ca. müsste es gehen.
was erzählst du da??
Da wird überhaupt keine Kopie gemacht. Da wird nur eine Referenz auf f2 gezetzt. Zeiger so zu sagen.
Das ist eindeutig ein Bug von VS (oder auch von deinem kapputen Projekt).
Hier die Erkläerung und Lösung:
Hier ist Ausschnitt aus deiner GesturesDlg-Klasse
public __gc class GesturesDlg : public System::Windows::Forms::Form
{
public:
rednose::Gestures::Gesture* gest;
System::Drawing::Point lastpoint;
Boolean allowDraw;
GesturesDlg(void)
{
gest = new rednose::Gestures::Gesture();
InitializeComponent();
}
...
der Konstruktor der Klasse GesturesDlg() liegt, wie es sich auch gehört (in diesem Fall), im public Abschnitt der Klasse.
Wenn du jetzt ein neues Element zu deinem Dialog hinzufügst, fügt VS eine neue Zeile in die Klasse ein. Dummerweise an falscher Stelle:
public __gc class GesturesDlg : public System::Windows::Forms::Form
{
public:
rednose::Gestures::Gesture* gest;
System::Drawing::Point lastpoint;
private: System::Windows::Forms::Button * button2; // <=======
Boolean allowDraw;
GesturesDlg(void)
{
gest = new rednose::Gestures::Gesture();
InitializeComponent();
}
...
Siehe Zeile mit button2. Damit gerät der Klassenkonstruktor automatisch in private Abschnitt und das bedeutet, dass kein Standardkonstruktor mehr zur Verfüging steht, um Klasse zu erzeugen.
Lösung ist, diese Zeile einfach zu allen weiteren "private" Zeilen verschieben.
protected:
void Dispose(Boolean disposing)
{
if (disposing && components)
{
components->Dispose();
}
__super::Dispose(disposing);
}
private: System::Windows::Forms::Button * button2; // <=======
private: System::Windows::Forms::TabControl * tabControl1;
private: System::Windows::Forms::TabPage * manageGestures;
...
Hier findest Du einen Webcast über XML, vielleicht hilft Dir das ja etwas.
Ein DataSet hat eine WriteXml und ReadXml Methode, diese meinte bestimmt Dein Kollege.
also bevor du zu ner textdatei greifst, kannst du auch ne access-db nehmnen (ja, ich weiss: ihhhhh ).
alternativ faellt mir noch mysql oder die msde ein... muss man aber halt installieren.
oder machst es mit xml - ist imo auch ner textdatei vorzuziehen; schneller: keine ahnung!?!?
dschensky schrieb:
Nimmt man hingegen einen Verweis auf eine dll über einen Dateinamen vor, muß man die XML-Dokumentationsdatei mitkopieren, damit Intellisense funktioniert.
Stimmt, war mein Fehler.
Die anderen Dateien wo es funktioniert hat waren auch keine dll Dateien sondern Steuerelemente.
Jetzt funktioniert es, vielen Dank für Deine Hilfe.
Wenn du den Tab zum formatieren benötigst \t und wenn du möchtest, dass er in dem
Text als \t erscheint \\t sonst wird er als Tab-Einschub interpretiert.
hallo Xqgene!
mein Verdacht, dass es sich um ein J# bzw. .NET Problem handelt, hat sich nicht bewahrheitet. Die Datei / das Package ist einwandfrei. Vielmehr war es so, dass es unter meinem Account in den lokalen Einstellungen im Temp-Verzeichnis Probleme mit dem Lesen der temporären Dateien gab, da diese automatisch verschlüsselt (per EFS) auf die Festplatte geschrieben wurden. Ich habe diese Default-Einstellung auf normal ("entschlüsselt") zurück gesetzt. Seit dem klappt alles herrlich.
Danke für Deine Antwort!
Ciao
shoat
Dank an allllllllleee!!!!!!!!
bei den vorschlägen hat nur noch die convertierung gefehlt.
void OutputWindowExample()
{
Window win = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput);
OutputWindow OW = (OutputWindow) win.Object; //hier
OutputWindowPane OWp = OW.OutputWindowPanes.Add("A New Pane");
OWp.OutputString("Some Text") ;
}
grusss
da es allerdings von vb auf c++ ein sehr weiter schritt ist, wurde imho fuer .net aufsteiger c# entwickelt.
denke damit ist dann alles gesagt *g*
Threads über "was ist besser" gibts hier massenweise, einfach suchfunktion verwenden wenns wirklich jemanden interessiert.
ist es nicht.
Ruft den Pfad ohne den Namen der ausführbaren Datei ab, die zum Starten der Anwendung verwendet wurde.
oder du kannst auch Application.ExecutablePath nehmen, um Pfad zu ermitteln
Arbeitsverzeichniss wäre eigentlich Environment.CurrentDirectory
Hallo allerseits,
folgendes Problem stellt sich mir:
Ich programmiere in C# mit DirektX Einbindung. Ich stelle eine Mesh dar, genauer gesagt: Mesh.TextFromFont .
Das PRG sieht so aus, das ich ein Textfeld habe, in dem ich einen beliebigen Text eingeben kann, dieser wird dann, per Button, sich drehend in 3D auf dem Monitor gezeigt (...total geil).
Über Font & Color - Dialoge kann ich alles ändern und einstellen, also
Farbe, Schriftart, ob kursiv oder Fett, es läuft super.
Nur die Schriftgröße läst sich trotz der Auswahlmöglichkeit im FontDialog nicht verändern, sie bleibt einfach so wie sie ist, egal was ich einstelle.
Ich glaube nicht, das es am FontDialog liegt !
Kann mir bitte jemand weiter helfen, es sind 300 Zeilen Code, habe aber nicht mal ne Ahnung wo ich ansetzen soll ?!