Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用TreeView.Tag=object?_C#_.net_Winforms_Treeview - Fatal编程技术网

C# 如何使用TreeView.Tag=object?

C# 如何使用TreeView.Tag=object?,c#,.net,winforms,treeview,C#,.net,Winforms,Treeview,大概是这样的: Dictionary<int, string> myData = new Dictionary<int, string>(); myData.Add(1, "England"); myData.Add(2, "Canada"); myData.Add(3, "Australia"); myTreeView.Node[0].Tag = myData; 第二个问题-什么将返回此表达式: Dictionary<int, string> myData

大概是这样的:

Dictionary<int, string> myData = new Dictionary<int, string>();
myData.Add(1, "England");
myData.Add(2, "Canada");
myData.Add(3, "Australia");
myTreeView.Node[0].Tag = myData;
第二个问题-什么将返回此表达式:

Dictionary<int, string> myData = new Dictionary<int, string>();
myData.Add(1, "England");
myData.Add(2, "Canada");
myData.Add(3, "Australia");

string str1 = new string();
str = myData[4]; // there isn't such a key as 4
异常还是空

异常还是空

好吧,你可以自己试试,或者它抛出一个异常

此外,您的代码不会按发布的方式编译。标记是将任意数据与对象关联的一种方法。因此,它的类型是object,所以在使用它之前,您需要强制转换它

如果您的代码由于过度使用Tag属性而变得笨拙,我建议您创建自己的节点类型,该节点类型继承自默认的TreeNode或其他类型,并使用该类型的对象填充树视图

异常还是空

好吧,你可以自己试试,或者它抛出一个异常

此外,您的代码不会按发布的方式编译。标记是将任意数据与对象关联的一种方法。因此,它的类型是object,所以在使用它之前,您需要强制转换它

如果您的代码因过度使用Tag属性而变得笨拙,我建议您创建自己的节点类型,该类型继承自默认TreeNode或其他类型,并使用该类型的对象填充树视图。

Control.Tag类型为object,因此您需要将其强制转换为Dictionary:

TryGetValue执行查找并将给定变量设置为它在单个调用中存在的值,因此通常是首选

string value;
if(dict.TryGetValue(key, out value))
{
    //use value
}
else { ... }
标记类型为对象,因此您需要将其强制转换为字典访问:

TryGetValue执行查找并将给定变量设置为它在单个调用中存在的值,因此通常是首选

string value;
if(dict.TryGetValue(key, out value))
{
    //use value
}
else { ... }

是否有机会检查是否存在这样的键,比如:如果dict包含key=4,那么{…}否则{…}?@Lee:为什么要转换为Dictionary?可以使用自定义类吗?@Amir-Dictionary是问题中使用的类型,但可以使用任何类型。@Lee:谢谢你的提示,我的代码有一个错误。我找到了。有没有机会检查一下是否有这样的键,比如:如果dict包含key=4,那么{…}否则{…}?@Lee:为什么要转换到Dictionary?可以使用自定义类吗?@Amir-Dictionary是问题中使用的类型,但可以使用任何类型。@Lee:谢谢你的提示,我的代码有一个错误。我找到了。
var dict = (Dictionary<int, string>)myTreeView.Node[0].Tag;
dict[1] = "Spain";
if(dict.ContainsKey(key))
{
    var value = dict[key];
}
else
{
}
string value;
if(dict.TryGetValue(key, out value))
{
    //use value
}
else { ... }