如何隐藏可见对象的名称?
我创建循环如何隐藏可见对象的名称?
TextBlock tb = new TextBlock();
tb.Text = dataShows.name[i];
tb.TextAlignment = TextAlignment.Center;
tb.Foreground = new SolidColorBrush(Colors.Black);
tb.Name = "tb" + i;
tb.Visibility = Visibility.Hidden;
的话,我想显示文本块这个名字TB3相同的代码tb3.Visibility= Visibility.Visible
TextBlock后我怎样才能做到这一点,在代码自动查找对象的名字吗?
编辑:抱歉我的坏语法。我想知道什么样的代码在C#中相同的这段代码document.getElementById('#name')
在JavaScript
例如存储在列表中的TextBlock对象:List<TextBlock>
它可以遍历
更新:
我想你开始从错误的方向:你可以做某事。像javascripts document.getElementByID()
,它叫做Reflection;但如果你是初学者,我不能推荐这个。
通过搜索myControl.Controls
数组,可以获取表单/控件中的所有控件,并检查它们的名称/类型。
但最简单的方法是将持有的TextBlock对象名单:
List<TextBlock> a = new List<textBlock>();
// in the creating loop:
a.Add(tb);
// access using Linq:
textBlock res = a.Find(c=>c.Name=="thename");
// is roughly the same as
foreach(TextBlock b in a)
if(b.Name=="thename") {
res = b;
break;
}
另一种方式
C#是不是像JavaScript
您使用的代码document.getElementById('#name')
展现你意图。让我们来分析一下JS在执行这行时究竟做了什么。它会搜索您的整个DOM中的ID为的对象名称,并返回对其的引用。
C#不能像那样操作。在某个地方没有容易搜索的对象堆,只需要执行查询并获取所需的对象。如果你想保留一个对象列表,你必须自己创建这个列表。
我假设你正在创建几个TextBlock
对象。当你这样做时,你需要将它们添加到列表中,然后可以查询。下面是一个简单的实现:
List<TextBlock> textBlocks = new List<TextBlock>();
private TextBlock GetTextBlockByName(string name)
{
if(name == null) return null; //I assume that a TextBlock needs to have a name.
// Returns the TextBlock if it was found or null if not.
// Throws an Exception if more than one TextBlock has the same name
return this.textBlocks.Find(t => t.Name == name).SingleOrDefault();
}
为你一个友好的提示,因为我认为你是不是用C#还非常精通:当你来到一个新的编程语言,不要以为它遵循即使他们偶尔有相似之处,你也知道跟其他语言完全相同的范例。我们有这么多种不同的语言的全部原因是有些事情在一个中很容易,在另一个中很困难。
'那么我想显示textBlock这个名字是tb3相同的代码'什么?我真的不知道你的意思是什么 – EpicKip
是的,请注明 – casiosmu
我无法用你的弱语法解释你的理解。我想知道在C#中的命令相同的document.getElementById('名称')在JavaScript –