如何隐藏可见对象的名称?

如何隐藏可见对象的名称?

问题描述:

我创建循环如何隐藏可见对象的名称?

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

+0

'那么我想显示textBlock这个名字是tb3相同的代码'什么?我真的不知道你的意思是什么 – EpicKip

+0

是的,请注明 – casiosmu

+0

我无法用你的弱语法解释你的理解。我想知道在C#中的命令相同的document.getElementById('名称')在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; 
    } 

另一种方式

+0

那不是“隐藏的名字可见对象” – EpicKip

+1

确定,但至少“发现”部分 – casiosmu

+0

你甚至不表明如何找到它在列表(你可以使用LINQ什么明显) – EpicKip

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#还非常精通:当你来到一个新的编程语言,不要以为它遵循即使他们偶尔有相似之处,你也知道跟其他语言完全相同的范例。我们有这么多种不同的语言的全部原因是有些事情在一个中很容易,在另一个中很困难。

+0

您可以按名称查找控制,不要连解释的问题更加复杂 – EpicKip

+0

啊使它更难比它,我不知道,因为我不与的WinForms工作过于频繁。随意编辑我的答案和建议一个简单的例子 –

+0

它不是的WinForms,通过Casiosmu其WPF和建议的答案(https://*.com/a/46830707/2885376)是好的,我想如果我有更多的知识编辑的WPF(并且可以更好地回答当前的答案)。但OP已经通过谷歌搜索继续前进:“如何通过名称wpf获得控制权” – EpicKip