像这样:
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;
那我想得到这个对象,应该怎么办呢? 喜欢:
string str = new string();
str = myTreeView.Node[0].Tag[2]; // "str" should be equal to "Canada"
myTreeView.Node[0].Tag[1] = "Spain";
str = myTreeView.Node[0].Tag[1]; // now "str" is equal to "Spain"
第二个问题 - 这个表达式会返回什么:
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
异常还是空值?
最佳答案
Control.Tag
键入为 object
所以你需要将它转换为 Dictionary<int, string>
来访问它:
Dictionary<int, string> dict = (Dictionary<int, string>)myTreeView.Node[0].Tag;
string str = dict[2];
和设置一个值类似:
var dict = (Dictionary<int, string>)myTreeView.Node[0].Tag;
dict[1] = "Spain";
如果您尝试访问一个不存在的 key ,一个 KeyNotFoundException
将被抛出。您可以使用 TryGetValue
检查字典是否包含给定的键或 ContainsKey
:
if(dict.ContainsKey(key))
{
var value = dict[key];
}
else
{
}
TryGetValue 在单个调用中执行查找并将给定变量设置为值(如果它存在),因此通常是首选。
string value;
if(dict.TryGetValue(key, out value))
{
//use value
}
else { ... }
关于c# - 如何使用 TreeView.Tag = object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11784956/