在WinForm上的TreeView中保留选择哪个TreeNode的指示符的最佳方法是什么?
假设我使用上下文菜单将子节点添加到树视图控件.
(1)我右键单击节点
(2)弹出上下文菜单
(3)然后我点击"添加"菜单项
(4)打开一个dialogBox
(5)我在DialogBox中输入名称,然后按OK
(6)创建一个新节点.
当我点击上下文菜单项时,如何获取当前节点的引用?
我需要这个,因为父对象存储在当前节点的Tag属性中.
可以说我有以下数据:
<XmlDataProvider x:Key="Values">
<x:XData>
<folder name="C:">
<folder name="stuff" />
<folder name="things" />
<folder name="windows">
<folder name="system32" />
</folder>
</folder>
</x:XData>
</XmlDataProvider>
Run Code Online (Sandbox Code Playgroud)
我怎样才能将它变成树视图?我似乎无法克服分层绑定...
我知道我可以在C#代码中使用它,但我想用绑定表达式来实现它.
如何阻止从树视图中选择节点?我尝试使用isselected,但它不起作用.
TreeNode node_serie = node_bad.Nodes.Add
(lab_ser.Text);
node_serie.Tag = k;
node_serie.IsSelected = false;
Run Code Online (Sandbox Code Playgroud) 我在我的Windows应用程序中使用.net树视图控件.我已经实现了拖放功能,它工作正常.现在,我想显示正在拖动的节点的文本/自定义图像及其图像,就像我们在窗口拖动文件夹时看到的那样,即我们看到文件夹的淡入淡出图像跟随光标直到掉落发生.
如何在.net winform app中执行此操作.
谢谢,Omky
邓诺(Dunno)为什么会变得愚蠢或更像是感觉更少的错误,通常我们将字符串添加到treeNode,然后为什么不在此代码中,
groupNode.ChildNodes.Add(UserPair.Value);
Run Code Online (Sandbox Code Playgroud)
(为什么不 ?)
protected override void CreateChildControls()
{
base.CreateChildControls();
try
{
int Index = 0;
TreeView tree = new TreeView();
TreeNode groupNode;
Dictionary<int, string> GroupList = new Dictionary<int, string>();
Dictionary<int, string> UserList = new Dictionary<int, string>();
List<string> IndividualUserList = new List<string>();
foreach (SPUser user in SPContext.Current.Web.Users)
{
string groupName = FormatUserLogin(user.Name);
if (groupName != "" && groupName != "System Account")
IndividualUserList.Add(groupName);
else if (user.IsDomainGroup && !string.IsNullOrEmpty(groupName) &&
Directory.DoesGroupExist(groupName))
{
Index++;
GroupList.Add(Index, groupName);
List<ADUser> adUsers = Directory.GetUsersFromGroup(groupName);
foreach (ADUser member …Run Code Online (Sandbox Code Playgroud) 我有一个在C#中递归的函数,我想编辑一个全局变量(我认为它是全局的,因为它之前是公共的)在函数外部声明.由于某种原因,我不知道它无法在该特定功能中看到公共变量.它可以在我的代码中的第一个函数中看到它,但不是在第二个我需要访问它并更改它以节省大量时间打开大量文件...
它有什么理由不可访问吗?如果是这样,我怎么能绕过它呢?
非常感谢提前!
public int[] timeInfo = new int[2];
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())
{
int check =0;
try
{
string s = "";
s = directoryInfo.FullName + "\\" + file.Name;
List<string> row, row2, row3 = new List<string>();
using (StreamReader readFile = new StreamReader(s))
{
row = (readFile.ReadLine().Split(',').ToList()); …Run Code Online (Sandbox Code Playgroud) 基本上,我正在使用Java中的Treeviewer(org.eclipse.jface.viewers.TreeViewer)。现在我的问题是,我想向现有结添加一个子元素/项。
首先,我的树看起来像这样:
Knot A
Knot B
Knot C
>child1
>child2
Run Code Online (Sandbox Code Playgroud)
这些child(child1,child2)arent是手动添加的,它们是在我接触到树本身之前生成的。
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL);我填充了treeviewer:
viewer.setInput(....elements());
从上面生成状态。
viewer.getTree().getItem(0) 返回我的树的正确结A。
但是我不能在现有的结上添加新的孩子。我尝试了以下操作和其他操作:
TreeItem newItem = new TreeItem(items[0], SWT.NONE); and
viewer.add(items[0], newItem); with a newly created item
viewer.refresh();
从理论上讲,我可以操作arrayList,它首先会填充treeviewer,但是我认为那真的很糟糕。
我真的不知道我现在在做什么错。我想这是一个很愚蠢的问题。如果是这样,那么我很抱歉。^^
感谢您的帮助,对于您能提供的每一个提示,我深表感谢。
我想拥有一个TreeView,使其所有子级永久扩展,并且我不希望用户能够扩展或折叠任何子级。
为此,我发现我需要执行以下操作:
即使该图标不再可见,它仍然可以单击。我看不到任何过滤方法;我只看到事实之后能够做出回应的方法。
另外,如果我想确保该功能需要做的其他事情,请告诉我。
我目前刚接触angular 4并使用ngx-treeview(https://www.npmjs.com/package/ngx-treeview)来获取树结构.使用能够绑定视图树的静态数据.
但是需要使用rest服务来获取树结构,从而从ngx-treeview创建了一个类似的TreeviewItem类
public class TreeviewItem
{
public string Text { get; set; }
public int Value { get; set; }
public bool Collapsed { get; set; }
public TreeviewItem[] Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的json回应
[{"text":"Core Fields","value":100,"collapsed":false,"children":null}]
Run Code Online (Sandbox Code Playgroud)
角度服务:
return this.http.get(this.appHelpersSvc.apiAddress +
"api/module/getStandardFields", { headers: httpHeaders })
.map((response:Response) => <TreeviewItem>response.json());
Run Code Online (Sandbox Code Playgroud)
角度分量
itemsList: TreeviewItem[];
this.moduleService.getStandardFields().subscribe(data => {this.itemsList = data;});
Run Code Online (Sandbox Code Playgroud)
这样做我得到了
Uncaught TypeError: this.items[i].getCheckedItems is not a function
at TreeviewComponent.getCheckedItems (http://localhost:4001/main.bundle.js:42763:107)
at TreeviewComponent.raiseSelectedChange (http://localhost:4001/main.bundle.js:42745:34)
at TreeviewComponent.ngOnChanges (http://localhost:4001/main.bundle.js:42703:22)
at checkAndUpdateDirectiveInline …Run Code Online (Sandbox Code Playgroud) treeview ×10
c# ×4
.net ×3
winforms ×3
angular ×1
collapse ×1
contextmenu ×1
data-binding ×1
disclosure ×1
java ×1
javafx ×1
jface ×1
recursion ×1
sharepoint ×1
tree ×1
treenode ×1
treeviewer ×1
treeviewitem ×1
wpf ×1