auf welchen tab im TabControl wurde geklickt?

25/07/2009 - 17:21 von Marcus Wagner | Report spam
Hallo erstmal,


ich habe hier ein kleines Problem, das sich so für mich nicht lösen làsst.

Ich habe ein TabControl mit verschiedenen TabPages. Nun möchte ich mit
der mittleren Maustaste verschiedene Aktionen auslösen, und zwar je
nachdem, auf welchen Tab des TabControls geclickt wurde.

Die Abfrage der TabPage nach Selected, Visible oder Focused funktioniert
leider nicht, und ich habe auch nichts anderes gefunden, was mir
weiterhelfen könnte.


Ich hoffe, jemand von euch weiss Rat

LG
Marcus
 

Lesen sie die antworten

#1 Marcus Wagner
25/07/2009 - 20:34 | Warnen spam
Marcus Wagner schrieb:
Hallo erstmal,


ich habe hier ein kleines Problem, das sich so für mich nicht lösen làsst.

Ich habe ein TabControl mit verschiedenen TabPages. Nun möchte ich mit
der mittleren Maustaste verschiedene Aktionen auslösen, und zwar je
nachdem, auf welchen Tab des TabControls geclickt wurde.

Die Abfrage der TabPage nach Selected, Visible oder Focused funktioniert
leider nicht, und ich habe auch nichts anderes gefunden, was mir
weiterhelfen könnte.


Ich hoffe, jemand von euch weiss Rat

LG
Marcus



Also, ich hab noch ein bisschen weitergefrickelt und habe auch etwas
erreicht:

Erstens eine meines Erachtens eigentlich elegante Methode, die aber
nicht funktioniert :/

Ich habe mir die Funktion GetChildAtPoint etwas genauer angeguckt. Das
Problem ist erstens, dass Mouseeventargs e.Location die relative
Mausposition auf dem TabControl ist, es muss also noch die Position des
TabControls addiert werden, dann liefert die Funktion aber leider nur
das TabControl selbst und keine TabPage. Ich bin also kein Stück
weitergekommen :/


Zweitens: unelegant, aber funktioniert:
Ich dividiere Mouseeventargs e.X durch TabControl tc.ItemSize.Width und
erhalte damit eine Integerzahl, die dem Index des Tabs entspricht. Das
Problem hierbei ist jedoch, dass die Grösse Tabs normalerweise dem Text,
der in den Tabs steht angepasst wird. Die Itemsize àndert sich aber
nicht! Somit kann man also den falschen Index erwischen oder sogar eine
Zahl ausserhalb der Anzahl der TabPages. Die Lösung hierfür ist, dass
man den SizeMode des TabControls auf Fixed setzt. Teilt man nun e.X
durch tc.ItemSize.Width so erhàlt man natürlich den richtigen Index aber
die TabPages passen sich dem Inhalt nicht mehr an.


Falls jemand eine bessere Lösung weiss, ich bin für alles offen ;)


LG
Marcus

Ähnliche fragen