C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリービューの描画について

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■84793 / inTopicNo.1)  ツリービューの描画について
  
□投稿者/ ピヨ (3回)-(2017/08/02(Wed) 18:43:42)

分類:[.NET 全般] 

2017/08/02(Wed) 18:46:18 編集(投稿者)
2017/08/02(Wed) 18:44:50 編集(投稿者)

<pre><pre>VisualStudio2010 C#
Windows10 の環境ですが

ツリービュー(tvw)の DrawNode ですが、DrawMode を OwnerDrawText にして
以下のように作ってみましたが。
ツリーを展開していくと
正常な位置と、tvw の左上に同時に文字がどんどん重なって描画されます。
どうしてでしょうか?

private void Form1_Load(object sender, EventArgs e)
{
TreeNode tn;

tvw.Nodes.Add("A");
tn = tvw.Nodes[0];
tn.Nodes.Add("B");
tn = tn.Nodes[0];
tn.Nodes.Add("C");
tn = tn.Nodes[0];
tn.Nodes.Add("D");
−−以下略
}

private void tvw_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
e.Graphics.DrawString(e.Node.Text, tvw.Font, new SolidBrush(Color.Red), e.Bounds.Left, e.Bounds.Top);
}</pre></pre>
引用返信 編集キー/
■84794 / inTopicNo.2)  Re[1]: ツリービューの描画について
□投稿者/ ピヨ (4回)-(2017/08/02(Wed) 18:52:28)
追記ですが、
以下のようにすると表示はしなくなりました。
でも、これって根本的に解決なのでしょうか?

private void tvw_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
if (e.Bounds.Left <= 0 && e.Bounds.Top <= 0) return;
e.Graphics.DrawString(e.Node.Text, tvw.Font, new SolidBrush(Color.Red), e.Bounds.Left, e.Bounds.Top);
}

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ