Tag: treeview

TreeView检查/取消检查所有子项

如何检查/取消选中TreeView中的所有子项? 当其中一个项目变为选中状态和子项目选中/未检查错误时,可能发生错误。 链接到VS 2010 Project + Exe YOUTUBE上的video private void Form1_Load(object sender, EventArgs e) { treeView1.CheckBoxes = true; treeView1.BeginUpdate(); treeView1.Nodes.Add(“1111”); treeView1.Nodes[0].Nodes.Add(“2222”); treeView1.Nodes[0].Nodes.Add(“2222”); treeView1.Nodes[0].Nodes.Add(“2222”); treeView1.Nodes[0].Nodes.Add(“2222”); treeView1.Nodes[0].Nodes[1].Nodes.Add(“3333”); treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add(“4444”); treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add(“4444”); treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add(“4444”); treeView1.EndUpdate(); treeView1.ExpandAll(); } private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) { treeView1.BeginUpdate(); foreach (TreeNode Node in e.Node.Nodes) { Node.Checked = e.Node.Checked; } treeView1.EndUpdate(); }

如何将树视图中的所有文件夹添加为具有嵌套的节点

我在一个文件夹下有一组目录。 目录结构不是100%一致的(例如,在A下可能存在文件夹中的文件夹但不在B下)。 我需要使用适当的嵌套绑定树视图中的所有文件夹(例如C:\ a \ b嵌套在C:\ a下)。 是否有一种简单的方法,甚至免费的树视图,让我这样做? 谢谢

如何将TreeViewItem放入生成的TreeViewItem?

C#: TreeViewItem treeItem = null; treeItem = new TreeViewItem(); treeItem.Header = “Audit”; foreach (cAuditTransactionTypeEntity tt in _Pot) { char[] charsToTrim = {‘ ‘, ‘\t’ }; treeItem.Items.Add(new TreeViewItem() { Header = tt.TransactionType, Name = tt.TransactionType.Replace(” “, “”)}); } ToDoList.Items.Add(treeItem); XAML: 我已将TreeViewItems添加到TreeView ,如上所示。 现在我需要在每个生成的TreeViewItems下添加更多项目。 但是,如XAML(也在上面)中所示,新生成的项目尚未添加,因此我无法将它们命名为在代码中引用它们。 treeItem.Items.Add(new TreeViewItem() { Header = tt.TransactionType, Name = tt.TransactionType.Replace(” “, “”)}); 因此,我在代码的这一部分添加了名称生成。 […]

Treeviewvalidation

树视图具有叶节点复选框。如果检查了至少一个节点并且不超过用户可以选择的特定节点(比如说3个节点),则需要validation树视图。 注意:Treeview是一个asp.net树视图(不是ajax树视图)

选择一个孩子后,WPF TreeviewItem父选择事件?

我有一个标准的WPF树视图项目与许多孩子。 以编程方式创建树时,我将选定的事件处理程序添加到父项和子项。 我发现的是,当子项目选择事件被触发并被处理后,然后触发父事件。 这个问题是我根据所选项填充数据网格。 因此,每次选择子项后,datagrid都会重置为父项选择。 请有人解释这个项目是否正常,或者我是否做错了什么以及如何解决它。 如果您需要更多信息,请告诉我。 连接事件处理程序: //parent TreeViewItem tvi = new TreeViewItem(); tvi.Header = str; tvi.Selected += CoreSupplierSelected //child TreeViewItem tvi = new TreeViewItem(); tvi.Header = str; tvi.Tag = resinSystems.Values[i]; tvi.Selected += CoreResinSystemSelected; 处理程序: private void CoreSupplierSelected(object sender, RoutedEventArgs e) { TreeViewItem item = e.OriginalSource as TreeViewItem; MaterialSelectionData thicknessData = editInterface.GetCoreThicknessData(new List() { […]

WPF如何将自引用数据集绑定到树视图

我是WPF的初学者。 我想将包含节点和关系的以下DataSet绑定到TreeView 。 数据集是: internal static DataSet getData() { DataTable dt = new DataTable(“data”); dt.Columns.Add(“Id”, typeof(int)); dt.Columns.Add(“ParentId”, typeof(int)); dt.Columns.Add(“NodeDescription”); dt.Rows.Add(1, null, “Employees”); dt.Rows.Add(2, null, “Cars”); dt.Rows.Add(3, 1, “Men”); dt.Rows.Add(4, 1, “Women”); dt.Rows.Add(5, 2, “BMW”); dt.Rows.Add(6, 2, “Lexus”); dt.Rows.Add(7, 3, “Adam Kowalski”); dt.Rows.Add(8, 3, “Dawid Nowacki”); dt.Rows.Add(9, 4, “Ilona Wacek”); DataSet ds = new DataSet(); ds.Tables.Add(dt); […]

C#WPF中的TreeView目录

我在C#Windows窗体应用程序中有这个代码,但我需要它在WPF中。 你有什么想法? private void button1_Click(object sender, EventArgs e) { ListDirectory(treeView1, “C:\\Users\\Patrik\\Pictures”); } private void ListDirectory(TreeView treeView, string path) { treeView.Nodes.Clear(); var rootDirectoryInfo = new DirectoryInfo(path); treeView.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo)); } private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo) { var directoryNode = new TreeNode(directoryInfo.Name); foreach (var directory in directoryInfo.GetDirectories()) directoryNode.Nodes.Add(CreateDirectoryNode(directory)); foreach (var file in directoryInfo.GetFiles()) directoryNode.Nodes.Add(new TreeNode(file.Name)); return directoryNode; } 感谢帮助。

处理过的RoutedEvent继续冒泡树

我正在开发一个基于TreeView的控件,我的双击事件继续冒泡我的TreeViewItem节点。 目标是在双击时让TreeViewItem展开或折叠。 我有一个样式,将MouseDoubleClick事件的事件处理程序应用于每个TreeViewItem 。 这是处理事件的代码 private void TreeViewItemDoubleClicked( object sender, RoutedEventArgs e ) { // Get the specific tree view item that was double clicked TreeViewItem treeViewItem = sender as TreeViewItem; // not null? if( null != treeViewItem ) { // Switch expanded state if( true == treeViewItem.IsExpanded ) { treeViewItem.IsExpanded = false; } else […]

如何防止事件导致自己的事件在C#中触发?

我有一个带有复选框的树视图,我有“AfterCheck”事件的以下处理程序: private void trvAvailableFiles_AfterCheck(object sender, TreeViewEventArgs e) { if (!_isCheckingInProgress) { trvAvailableFiles.BeginUpdate(); var nodePath = e.Node.Tag.ToString(); bool isChecked = e.Node.Checked; e.Node.Nodes.Clear(); try { _fileTreeLogic.GetChildNodes(e.Node, true); e.Node.ExpandAll(); _isCheckingInProgress = true; SetChildrenCheckState(e.Node, isChecked); _isCheckingInProgress = false; } finally { trvAvailableFiles.EndUpdate(); } } } 如果仔细观察,你会发现我正在检查“_isCheckingInProgress”。 如果不是,那么我继续并展开所有节点并调用SetChildrenCheckState()方法。 我遇到的问题是SetChildrenCheckState()随后将导致每个子节点都为其自己的节点触发AfterCheck事件。 我的问题是,是否有更简洁的方法允许第一个AfterCheck事件发生而不是后续事件? 我必须有一个实例bool变量来检查和设置似乎有点hackish。

Treeview绘制故障

我为每个TreeView节点实现了一个多色系统。 但每次我扩展子节点时,它都会消耗,但也会在我的rootNode上绘制节点(图像2和3)。 代码来自我之前的问题 ,这就是bug的样子 如果我决定关闭每个节点并重新扩展毛刺消失了。(图4) 问题似乎与Bounds ,这就是抽签不在正确位置的原因。 知道为什么吗? private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) { string[] texts = e.Node.Text.Split(); using (Font font = new Font(this.Font, FontStyle.Regular)) { using (Brush brush = new SolidBrush(Color.Red)) { e.Graphics.DrawString(texts[0], font, brush, e.Bounds.Left, e.Bounds.Top); } using (Brush brush = new SolidBrush(Color.Blue)) { SizeF s = e.Graphics.MeasureString(texts[0], font); e.Graphics.DrawString(texts[1], font, brush, […]