TreeViewの各ノードの横にボタンを追加するにはどうすればよいですか?TreeViewの各ノードの横にボタンを追加するにはどうすればよいですか?
答えて
ツリービューの各ノードの横にボタンを追加するのは難しいです。自分でツリービューの描画を処理し、ボタンを自分で描画したり、その機能をエミュレートしたり、子ボタンコントロールを作成してツリーコントロール内の適切な場所に表示したり、コントロールがスクロールしたときなどにそれらを再配置する必要があります。いずれにせよ、それは悪夢になるだろう。
幸運にも、簡単な方法があります。その複雑なものを何もする必要はありません。なぜなら、そうしないといけないからです!
ボタンでツリーコントロールを見たことがありますか?いいえ。したがって、ツリーコントロールにボタンがある場合は、エンドユーザーには奇妙なものが表示されます。
あなたがすべきことは、他のアプリケーションが、ボタン付きツリーコントロールを使わずに解決しようとしている問題を解決したかどうかを検討することです。ここで
と思われます。ありがとうございました。 – Seva
ええ...しかし、私はテキストボックスで1つが必要...まあまあですか?私は深いコピーツールを作成しています。チェックボックスと、ユーザーが各ノードの名前をツリーの名前に変更する機能が必要です。 : – LightStriker
あなたはツリー内にノードがあるのと同じくらい多くのテキストボックスを必要としていますか?1つのテキストボックスはどのようにして、必要なときにのみ作成し、入力を終えるとすぐに破棄されますか? –
は、私は誰かが実際に、それはあなたがやろうとしていることは何か達成したCodeProjectの上のソースコードプロジェクトを発見したサイトである。これは、これは、CodeProjectのリンクであなた
How to put buttons inside a treeview 役立つことを願っていますプロジェクトには実際には作業中のプロジェクトに沿ったソースがあります。幸運
+1その質問に答えてください、しかし、私は、記事のボタンtreeviewのスクリーンショットの奇妙さがさらに私自身のポイントを強化すると思います。 –
ありがとう..そして私は同意します.. – MethodMan
これを行う最も簡単な方法は、自分でツリーを描くことです。ここで(PushButtonStateがSystem.Windows.Forms.VisualStyles名前空間内に位置していることに注意してください)小さな例です。
public class CustomTreeView : TreeView
{
private Rectangle buttonRect = new Rectangle(80, 2, 50, 26);
private StringFormat stringFormat;
public CustomTreeView()
{
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
DrawMode = TreeViewDrawMode.OwnerDrawText;
ShowLines = false;
FullRowSelect = true;
ItemHeight = 30;
stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Near;
stringFormat.LineAlignment = StringAlignment.Center;
}
protected override void OnDrawNode(DrawTreeNodeEventArgs e)
{
e.Graphics.DrawString(e.Node.Text, this.Font, new SolidBrush(this.ForeColor), e.Bounds, stringFormat);
ButtonRenderer.DrawButton(e.Graphics, new Rectangle(e.Node.Bounds.Location + new Size(buttonRect.Location), buttonRect.Size), "btn", this.Font, true, (e.Node.Tag != null) ? (PushButtonState)e.Node.Tag : PushButtonState.Normal);
}
protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e)
{
if (e.Node.Tag != null && (PushButtonState)e.Node.Tag == PushButtonState.Pressed)
{
e.Node.Tag = PushButtonState.Normal;
MessageBox.Show(e.Node.Text + " clicked");
// force redraw
e.Node.Text = e.Node.Text;
}
}
protected override void OnMouseDown(MouseEventArgs e)
{
TreeNode tnode = GetNodeAt(e.Location);
if (tnode == null) return;
Rectangle btnRectAbsolute = new Rectangle(tnode.Bounds.Location + new Size(buttonRect.Location), buttonRect.Size);
if (btnRectAbsolute.Contains(e.Location))
{
tnode.Tag = PushButtonState.Pressed;
tnode.Text = tnode.Text;
}
}
}
また、あなたも、カスタムコントロールを作成せずにこれを達成することができます - ちょうど標準のツリービューにこれらのイベントハンドラを追加します
- 1. 別のボタンの横に別のボタンやテキストビューを追加するにはどうすればいいですか?
- 2. ItemsControlで各コントロールの後にボタンを追加するにはどうすればよいですか?
- 3. ギャラリービューの右側に「画像を追加」ボタンを追加するにはどうすればよいですか?
- 4. Googleマップ:マップの横にアドレスのリストを追加するにはどうすればよいですか?
- 5. Fitnesseのフィクスチャページの横にデバッグリンクを追加するにはどうすればよいですか?
- 6. MapViewにボタンを追加するにはどうすればいいですか?
- 7. ComboBoxをTreeView列に追加するにはどうすればよいですか?
- 8. ビデオプレーヤーのボタンコンポーネントにボタンのような動作を追加するにはどうすればいいですか?
- 9. TreeViewの選択されたノードに対する新しいノードの追加
- 10. 各カテゴリに異なる色の.labelクラスを追加するにはどうすればよいですか?
- 11. Googleマップの横にCSSテーブルを追加するにはどうすればいいですか?
- 12. TreeViewでノードの名前を変更するにはどうすればよいですか?
- 13. ハッシュの各キーにプレフィックスを追加するにはどうすればよいですか?
- 14. 行間と各イメージボタンの間にスペースを追加するにはどうすればよいですか?
- 15. observable Array内の各項目にdependentObservableを追加するにはどうすればよいですか?
- 16. Pyramidの各ビューに条件付きリダイレクトを追加するにはどうすればよいですか?
- 17. 配列の各オブジェクトに引用符を追加するにはどうすればよいですか?
- 18. ノードを特定の位置に追加するにはどうすればよいですか?
- 19. WinFormsのTabControlの空の領域にボタンを追加するにはどうすればよいですか?
- 20. ライブhbase/hadoopクラスタに新しいノードを追加するにはどうすればよいですか?
- 21. アンドロイドの日付ピッカーウィジェットに新しいボタンを追加するにはどうすればよいですか?
- 22. C#コードを使用してTreeViewにノードの子を追加するにはどうすればよいですか?
- 23. Androidの画像ボタンの下にテキストを追加するにはどうすればよいですか?
- 24. Javascriptの確認ボックスの[OK]ボタンにonclickイベントを追加するにはどうすればよいですか?
- 25. QTのウィジェットの隅にボタンを追加するにはどうすればよいですか?
- 26. デフォルトのボタンでカスタムコントロールをActionSheetに追加するにはどうすればよいですか?
- 27. Dojoを使用してDOMノードにスタイリングを追加するにはどうすればよいですか?
- 28. jQuery easySlider 1.7 - 次のボタンと前のボタンを追加するにはどうすればいいですか?
- 29. ボタンを含む列をasp.netのgridviewに追加するにはどうすればよいですか?
- 30. Androidアプリの各タブに一意のコンテンツを追加するにはどうすればいいですか?
これまでどんなコードがありますか?ヒント:ボタンbtn = new Button()を使用すると、コード内にスタブする必要があります。 – MethodMan
@DJKRAZE:これは動作しません。彼はツリービューでそれを望んでいます。 – SLaks
これは不可能です。サードパーティのTreeViewが必要です。 – SLaks