TreeView klaut Fokus

05/10/2009 - 10:24 von Werner Schmidt | Report spam
Hallo Group,

über dieses Problem scheinen schon so einige Leute gestoßen zu sein,
eine Lösung konnte ich trotzdem nicht finden:

In unserer Anwendung werden über ein TreeView Dokumente aufgelistet.
Klickt der Benutzer auf einen dieser Dokument-TreeNodes wird das
entsprechende Dokument - z.B. in Word - geöffnet.

Unglücklicherweise wird Word im Hintergrund geöffnet, bzw. das TreeView
"klaut" sich/behàlt den Fokus und schiebt unsere Anwendung über das
Word-Fenster.

In früheren Versionen unserer Anwendung wurden externe Anwendungen in
einem derartigen Fall über WinApi-Tricks als oberstes Fenster gesetzt,
was dann dazu führte, dass sàmtliche Dialog unsere Anwendung hinter dem
Fenster der externen Applikation geöffnet wurden.

Ich suche also einen Weg, das Word-Fenster im Vordergrund anzuzeigen.

Hoffe jemand hat eine Lösung zu dem Problem gefunden.

Gruß

Werner

P.S.: Ich verwende Visual Studio 2005, .Net2.0, C#
 

Lesen sie die antworten

#1 Werner Schmidt
05/10/2009 - 15:02 | Warnen spam
Ich schrieb:
In unserer Anwendung werden über ein TreeView Dokumente aufgelistet.
Klickt der Benutzer auf einen dieser Dokument-TreeNodes wird das
entsprechende Dokument - z.B. in Word - geöffnet.

Unglücklicherweise wird Word im Hintergrund geöffnet, bzw. das TreeView
"klaut" sich/behàlt den Fokus und schiebt unsere Anwendung über das
Word-Fenster.



Habe selbst eine Lösung gefunden:

[Zitat]
The TreeView control can be quite painful this way, it updates the
selection and steals the focus back after its events fire. The trick is
to delay the execution of your code until after the click event is fully
processed by the control. The framework offers an elegant solution:

private delegate void FocusSelector(TreeNode node);
private void treeView1_NodeMouseClick(object sender,
TreeNodeMouseClickEventArgs e) {
this.BeginInvoke(new FocusSelector(HandleClick), e.Node);
}
private void HandleClick(TreeNode node) {
textBox1.Text = node.Text;
textBox1.Focus();
}
[/Zitat]

Quelle:
http://social.msdn.microsoft.com/fo...196e180a1/

Gruß

Werner

Ähnliche fragen