Entwickler-Ecke

WinForms - TreeView Checked per Doppelklick verhindern


DareDevil - Do 27.08.09 12:49
Titel: TreeView Checked per Doppelklick verhindern
Habe da mal wieder ein problem.

Wenn ich ein TreeView mit Checkboxen haben möchte ich verhindern das bei einen Doppelklick auf die Checkbox die Eigenschaft checked auf true gesetzt wird.
Habe bis jetzt keine Lösung dazu gefunden vielleicht weiß ja einer von euch weiter.

Gruß

DareDevil


Nemag - Do 27.08.09 15:01

Hast dir schon den EventHandler zu NodeDoubleCLick der TreeView angeschaut?


C#-Quelltext
1:
2:
3:
4:
5:
   
private void tree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
     e.Node.Cheched = ????
}


DareDevil - Do 27.08.09 15:42

jup habe ich schon funktioniert leider nicht


Nemag - Do 27.08.09 16:05

Was willst du denn jetzt eigentlich?

Wenn du willst das sich der Checkbox so wie du schreibst bei Doppelklick nicht auf true setzt dann weiß ich nicht was daran nicht funktioniert:


C#-Quelltext
1:
2:
3:
4:
private void tree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
     e.Node.Cheched = false;
}


oder willst du dass ein Doppelklick nur als ein Klick auf dem Knoten gewertet wird?


InCoBra - Do 27.08.09 16:48

Wenn du das aktivieren ganz verhindern willst:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
   if (e.Node.Checked)
   {
      e.Node.Checked = false;
   }
}


und sonst klappt die Variante mit NodeDoubleClick auch... Habs gerade extra ausprobiert!


DareDevil - Do 27.08.09 19:58


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
private void tvPlayerCfg_BeforeCheck(object sender, TreeViewCancelEventArgs e)
{
 if ((countCfg > 1 && !e.Node.Checked) || e.Node.Tag.ToString() == "head")
 {
  e.Cancel = true;
 }
}

private void tvOptions_AfterCheck(object sender, TreeViewEventArgs e)
{
 if (e.Node.Checked)
 {
  ++countCfg;
 }
 else
 {
  --countCfg;
 }
}


bewirkt das max 2 checkboxen aktiv sein können

nur wenn ich jetzt genau auf die checkbox einen doppelklick (nicht auf den text) mache setzt er sie mir trotzdem aktiv