ComboBox funktioniert nicht?
-
Hi,
nun als ich gerade an meinem kleinen Projekt weitergearbeitet habe, hab ich alles mal probiert ob es geht usw. und da ist mir aufgefallen dass meine ComboBox nicht wirklich geht. Schwer zu erklären, schauts euch am besten selbst an
// Ausführen private void connectButtonRun_Click(object sender, EventArgs e) { if (connectComboBoxSelectGame.Items.ToString() == "Call of Duty") { try { StreamReader readCoDPath = new StreamReader("CoD.Directory.Path.txt"); string stringCoDPath = readCoDPath.ReadLine(); readCoDPath.Close(); Process startCoD = new Process(); startCoD.StartInfo.WorkingDirectory = stringCoDPath; string filenameStartCoD = "CoDMP.exe"; startCoD.StartInfo.FileName = filenameStartCoD; startCoD.Start(); } catch (Win32Exception) { MessageBox.Show("You have to enter the correct path", "Warning"); } } else if (connectComboBoxSelectGame.Items.ToString() == "Call of Duty 2") { try { StreamReader readCoD2Path = new StreamReader("CoD2.Directory.Path.txt"); string stringCoD2Path = readCoD2Path.ReadLine(); readCoD2Path.Close(); Process startCoD2 = new Process(); startCoD2.StartInfo.WorkingDirectory = stringCoD2Path; string filenameStartCoD2 = "CoD2MP_s.exe"; startCoD2.StartInfo.FileName = filenameStartCoD2; startCoD2.Start(); } catch (Win32Exception) { MessageBox.Show("You have to enter the correct path", "Warning"); } } }
Das und noch bissl was anderes sieht bei mir hier so aus:
http://i.hosted-by.clanserver4u.de/reviewedConnect.jpgHier die ComboBox "Select Game" funzt nicht, also wie man hoffe ich mal einigermassen am Code erkennen kann, kann man bei der ComboBox zwischen zwei Spielen auswählen, also Call of Duty und Call of Duty 2. So, und wenn ich jetzt bspw. Call of Duty anwähle und den "Run" button drücke tut sich garnichts. Dann hab ich den ganzen code mal den oberen Teil von der if schleife rausgenommen und geschaut ob es am Code liegt, nachdem es dann wieder wunderbar lief, weiss ich nun genau dass es an der ComboBox liegt. Aber ich weiss nicht was ich nun machen soll. Ich hab schon in der MSDN Library geschaut und da mal was von "BeginUpdate" gesehen, nun weiss ich aber nicht ob ich das brauche oder nicht, und falls ich es brauche weiss ich nicht wie ich das einsetze.
Und als Nebenproblem hab ich noch, dass wenn ich jetzt nen Pfad hab also
D:/Call of Duty/CoDMP.exe und wie an den Screen den ich oben als Link gespostet habe zu sehen ist, habe ich da auch noch z.B. ip oder pw zum direktem draufconnecten noch mit drin. Also brauch ich hinten dran noch:
+connect ip.ip.ip.ip:port +password blabla
also insgesamt sieht dass dann bspw. so aus:
D:/Call of Duty/CoDMP.exe +connect ip.ip.ip.ip:port +password blabla
nun meint er aber bei mir dass er die datei nicht findet, ist auch irgendwo klar weil man dass normalerweise so schreibt:
"D:/Call of Duty/CoDMP.exe" +connect ip.ip.ip.ip:port +password blabla
aber im Process und mit WorkingDirectory haut das so nicht ganz hin. Hat da jemand vielleicht noch einen kleinen Tipp?So und nun noch nen ganz kleines Prob was hier vor kurzem erst besprochen wurde aber mir nicht wirklich weiterhilft. Mein Projekt besteht aus vielen kleinen Fenstern, also hab ich bspw. ein Hauptfenster
http://i.hosted-by.clanserver4u.de/reviewedMain.jpg
und wenn man dort auf Connect klickt kommt man dahin:
http://i.hosted-by.clanserver4u.de/reviewedConnect.jpg
So und nun möchte ich nur das Connect Fenster schliessen, was muss ich dafür machen? Mit Hide(); ist es ziemlich doof, des ist nicht ganz das was ich mir vorstelle, einfach nur wie Application.Exit(); nur dass er nur das eine Fenster schliessen soll. Weiss das vielleicht noch einer?
Und wenn ich hier alle Antworten von euch lieben Menschen bekomme dann gibts bei mir ma Freibier
Vielen vielen Dank schonmal im vorraus.
MfG,
skY
-
Okay das Problem wie ich die Fenster schliessen kann hab ich jetzt doch mit Hide(); gelöst bekommen. Aber wer einen besseren Vorschlag hat, immer her damit
... so ich hau mich jetzt auch mal endlich in die heia :> n8
-
skY! schrieb:
Okay das Problem wie ich die Fenster schliessen kann hab ich jetzt doch mit Hide(); gelöst bekommen. Aber wer einen besseren Vorschlag hat, immer her damit
... so ich hau mich jetzt auch mal endlich in die heia :> n8
Wie wäre es das Fenster einfach mit this.Close() zu schließen? Wenn du das in deinem Connect Fenster ausführst, wird auch nur das geschlossen weil ja die Apllikationsschleife in der Mainform läuft(normalerweise).
connectComboBoxSelectGame.Items.ToString() == "Call of Duty"
Benutzt du nen Debugger?!? Sollte man, dann sieht du, dass du nicht mit einem bestimmtem Item vergleichst, sondern mit der ItemCollection und das kann nicht funktionieren. Nimm das SelectedItem(Hab grad net des genaue im Kopf) Property der Combobox um an das gerade ausgewählte zu kommen.
Gruß Talla
-
yo hab das jetzt so geklärt bekommen wie du gesagt hast :>
connectComboBoxSelectGame.SelectedItem.ToString()
jetzt bräuchte ich noch kurz bisschen hilfe mit den pfad von den games.
Und die sache mit denthis.Close();
ist bisschen blöd, wenn ich das bspw. auf connect click und des fenster danach schliesse, und nochmals aus dem main fenster öffnen will, kommt immer irgendwas mit Disposed Object.
-
Stimmt, hab ich vergessen, wollte ja auch was dazu schreiben. Die Argumente kannst du in den StartInfos extra angeben, du musst nicht (bzw. es geht auch gar nicht) die auszuführenden Datei + Argumente in einerm String übergeben.
-
okay habs, vielen dank.
-
und noch ganz kurz was zu Hide();
bspw. ich hab hier wieder meine zwei fenster, also main und connect, wenn ich bei main auf den button klick dass das connect fenster auf geht und ich dann im connect fenster auf meinen exit button klicke geht das fenster zu und wenn ich will kann ich es aus dem main fenster nochmal öffnen. wenn ich jetzt aber das connect fenster nicht mit meinen exit button schliesse, sondern einfahc oben auf x klicke und ich will es nochmal aus main öffnen geht es nicht: ObjectDisposedException
bin jetzt mit try und catch drüber dass immer ne meldung in ner MessageBox kommt aber ist doch auch bissl blöd für den user dass, wenn er es mit x schliesst nicht nochmals öffnen kann
... hat talla
oder jemand anders da vllt noch ne lösung? ^^
-
Bei X wird form.dispose() aufgerufen, bei deinem Button solltest du daher die Form immer neu anlegen. Bei deinem Exit-Button mit dispose() beenden.
MfG SideWinder
-
yo hab nen fehler gemacht, hab die referenz direkt in der class erstellt antatt im button und deshalb hat er sie nicht neu erstellt beim erneuten klicken sondern wollte sie nochmals öffnen. yo jetzt wird mir wieder einiges klar über c# :>
thx
-
SideWinder hat ja die Begründung schon geliefert. Alternativ könntest du auch das Schließen über das X abfangen und das disposen verhindern. So könntest du immer das gleiche Objekt benutzen. Müsste man je nach Anwendung entscheiden was sinnvoller wäre. In deinem einfachen Fall ists so ziemlich egal wie du das handhabst, soviel Speicherplatz nimmt ne einfache Form nicht weg :).