1

TreeNode オブジェクトに ForeColor を設定しました。その後、このノードをクリックすると、マウスを離すまで SelectedNode.ForeColor は変更されません。

TreeNode.ForeColor = Color.Red;

ForeColor == Color.Empty を持つすべての TreeNode は、マウス クリックですぐに適切な SelectedNode.ForeColor を取得します。

キーボードを使用して選択を移動すると、期待どおりに機能します。しかし、マウスクリックではありません。ノードの ForeColor を Color.Black などに設定し、最初のマウス クリックで正しい SelectedNode.ForeColor を取得するにはどうすればよいですか?

このように TreeView を埋めます。「色」が追加されたすべての TreeNode オブジェクトで、マウス ダウンで ForeColor (赤) を取得します..マウスの左ボタンを離して適切な白の ForeColor を取得するまで..

private void Form1_Load(object sender, EventArgs e)
{
  for (int i = 0; i < 3; i++)
  {
    TreeNode node = new TreeNode("node_" + i);

    for (int j = 0; j < 3; j++)
    {
      TreeNode childNode = new TreeNode("childNode_" + i + j);

      if (j==0)
      {
        childNode.Text += "color";
        childNode.ForeColor = Color.Red;
      }

      node.Nodes.Add(childNode);
    }
    treeView1.Nodes.Add(node);
  }
}

こうすれば..

treeView1.FullRowSelect = false; //if this is true it don't work.. hm!
treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
treeView1.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode);

void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
  e.DrawDefault = true;
}

できます!うーん。これは、.NET TreeView の既定の動作のバグですか?

そしてもちろん..

//treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
//treeView1.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode);

..今は正常に戻っています..そして、働かないでください!! 誰も理由を説明できますか!? ここでは、ノードの左ボタンをクリックすると、青色の背景とノードの ForeColor が取得されます。その上で、マウス ボタンを離すまで待ってから、選択した背景と前部の色を正しくペイントします (私の意見では)。

ノート!FullRowSelect が true の場合。上記の DrawNode コードは機能しません。ノード部分を除くすべての行に青い背景色をペイントします(白くペイントされています)。

4

3 に答える 3

0

マウスが下がったときにトリガーされるようにマウスクリックイベントを設定します。

于 2010-12-09T20:58:37.437 に答える
0

NodeMouseClickまたはBeforeSelectイベントを試しましたか?

お役に立てれば、

于 2010-12-10T12:33:44.010 に答える
0

ツリービューの HideSelection プロパティを false にします。

于 2013-12-17T11:49:39.940 に答える