Autor |
Beitrag |
DarkSu
Hält's aus hier
Beiträge: 14
|
Verfasst: Do 04.04.13 19:03
Hallo zusammen ..
Habe eben festgestellt das wenn das Form1 immer TopMost ist, dass die comboxBox1 nicht geht. Öffnet sich und geht gleich wieder zu. Wenn ich TopMost ausschalte geht es. Kennt einer einen Trick das zu umgehen ?
Denke dann an etwa sowas:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| private void comboBox1_DropDown(object sender, EventArgs e) { if (checkBox1.Checked == true) { checkBox1.Checked = false; } } |
Nun sollte ich mir natürlich vorher merken wie der Schalter war, um ihn dann wieder in comboBox1_DropDownClosed zurück zu setzen.
Achja die checkBox1 steuert bei mir this.TopMost = true; oder eben nicht ..
Gruss DarkSu
Moderiert von Th69: Titel geändert: From1 -> Form
|
|
DarkSu 
Hält's aus hier
Beiträge: 14
|
Verfasst: Do 04.04.13 22:18
So nochmal ich. Quasi als Alleinunterhalter
Ich hab das ganze einstweilen so gelöst. Evtl. fällt jemand ja was besseres ein ..
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| private void comboBox1_DropDown(object sender, EventArgs e) { if (checkBox1.Checked == true) { OnTop_warZustand = true; checkBox1.Checked = false; } }
private void comboBox1_DropDownClosed(object sender, EventArgs e) { if ((checkBox1.Checked == false) & (OnTop_warZustand = true)) { checkBox1.Checked = true; OnTop_warZustand = true; } } |
Gruss DarkSu
|
|
DarkSu 
Hält's aus hier
Beiträge: 14
|
Verfasst: Mo 12.08.13 17:10
Sorry nun muss ich langer Zeit doch nochmal das Thema aufgreifen. Das Problem ist leider auch in anderen "Abteilungen" vorhanden. Der obige Trick funktioniert zwar mit der comboBox1 aber leider nicht bei folgendem Problem.
Ist mein Form mit "this.TopMost = true;" im Vordergrund dann spinnt auch das Contextmenü im WebControl ( WebBrowser ). Wenn ich also die Rechte Maustaste klicke kann ich "OPTISCH" das Manü zick mal an den Screen zaubern. Schalte ich TopMost = false passiert das nicht.
Irgend jemand eine Idee wie ich das abfangen kann. Oder gibt es eine Möglichkeit das Webcontrol Contextmenu (rechte Maustaste) zu kontrollieren ?
Ala if Context open then ...
mfg DarkSu
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mo 12.08.13 17:24
C#-Quelltext 1:
| if ((checkBox1.Checked == false) & (OnTop_warZustand = true)) |
Hi! Sofern das auch Deinem kompilierten Quelltext entspricht ist Dir hier ein ganz grober Schnitzer unterlaufen.
Es empfiehlt sich übrigens stets auf Vergleiche mit true und gegenfalls false zu verzichten:
C#-Quelltext 1:
| if (!checkBox1.Checked & OnTop_warZustand) |
Aus Zeitgründen kann ich mich leider nicht mit den restlichen Problemen beschäftigen. Aber vielleicht war es das auch bereits.
Beste Grüße
|
|
DarkSu 
Hält's aus hier
Beiträge: 14
|
Verfasst: Mo 12.08.13 17:37
Hallo Marc.
Danke für den Hinweis .. Ja das ist mir auch schon vor einiger Zeit aufgefallen. Das hat also nichts mit dem jetzigen Fehler/Problem zu tun. Die comboBox tut ihren Dienst wie sie soll.
Dank Dir trotzdem ..
mfg DarkSu
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 12.08.13 17:43
Die Wurzel des Problems ist das du TopMost änderst während die Form angezeigt wird. Jedes Control mit Kindfenstern wird potentiell darüber stolpern. Am besten wäre es das einfach nicht zu tun. Sondern dich vor dem anzeigen der Form zu entscheiden oder zumindest die Form sauber neu zu öffnen wenn sich TopMost ändert.
Ansonsten wartet sicher schon irgendwo das nächste Control auf dich das damit ein Problem haben wird.
|
|
DarkSu 
Hält's aus hier
Beiträge: 14
|
Verfasst: Mo 12.08.13 19:28
Ralf Jansen hat folgendes geschrieben : | Die Wurzel des Problems ist das du TopMost änderst während die Form angezeigt wird. Jedes Control mit Kindfenstern wird potentiell darüber stolpern. Am besten wäre es das einfach nicht zu tun. Sondern dich vor dem anzeigen der Form zu entscheiden oder zumindest die Form sauber neu zu öffnen wenn sich TopMost ändert.
Ansonsten wartet sicher schon irgendwo das nächste Control auf dich das damit ein Problem haben wird. |
Hallo Ralf ..
Die Wurzel allen übels ist sicher das TopMost, allerdings ändere ich das während das Form angezeigt wird eigenlich nicht mehr. Der Zustand wird in der Regel beim starten über ein INI File festgelegt.
C#-Quelltext 1: 2: 3: 4: 5: 6:
| checkBox1.Text = ini.IniReadValue("Settings", "Top"); if (checkBox1.Text == "ON") { checkBox1.Checked = true; } |
Setzen tu ich das ganze dann über den Timer um den Zustand gegebenfalls auch über eine checkBox zu
ändern.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| private void timer1_Tick(object sender, EventArgs e) { if (checkBox1.Checked == true) { this.TopMost = true; } else { checkBox1.Checked = false; this.TopMost = false; } [...] |
mfg DarkSu
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 12.08.13 20:37
|
|
DarkSu 
Hält's aus hier
Beiträge: 14
|
Verfasst: Di 13.08.13 06:11
Ralf Jansen hat folgendes geschrieben : | Wofür ist der Timer? |
Siehe zwischen den beiden Schnippsel ..
mfg DarkSu
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Di 13.08.13 09:52
Der Satz ist nicht wirklich erhellend.
Es sieht für mich so aus als würdest du vor dem anzeigen die INI auslesen und nur die CheckBox setzen, warum nicht gleich auch TopMost? Warum nicht den CheckBox Zustand dirket mit TopMost verknüpfen warum einen Timer? Ich vermute mal der Timer soll es aus irgendeinem Grund verzögern potentiell zu einem Zeitpunkt der schon nach dem ersten anzeigen liegt (Show() oder ShowModal()) was die Probleme verursacht. Aber welches Problem sollte der Timer lösen?
|
|