2012-09-06 67 views
1

对不起,问题标题。 有没有办法做到这一点的一条线:C#投射问题 - 简洁

Button button = (Button)Gridview.Cells[0].FindControl("controlname"); 
button.Enabled = (some boolean); 

例如,在VB一个directcast将使:

DirectCast(Gridview.Cells(0).FindControl("controlname"), Button).Enabled = (some boolean value) 

还是需要将在两行?

谢谢!

回答

13

我猜你试过显而易见但被绑定优先级抓住了。除非另有说明,方法和属性将在投射前完成。使用圆括号可以使其首先执行演员,然后调用现在演员控制的属性。

((Button)Gridview.Cells[0].FindControl("controlname")).Enabled = (some boolean); 
+1

“括号” ....? –

+0

@KirkWoll:在英格兰(或者至少在我被教过的地方)'()'被称为括号以及括号(我相信有人称它们为括号)。我通常将它们称为括号(如图所示),通过调用方括号,大括号等方式将它们与其他类型区分开来。维基百科告诉我“使用不合格的括号指的是不同部分的括号世界和不同的背景下。“ - http://en.wikipedia.org/wiki/Bracket – Chris

+0

@KirkWoll:根据[this](http://dict.leo.org/forum/viewUnsolvequery.php?idThread=155474&idForum=1&lp=ende&lang=de)许多母语人士将其讨论称为括号。 –

6

只需附上原始表达式中括号:

((Button)Gridview.Cells[0].FindControl("controlname")).Enabled = true; 
+3

为什么有人-1这只比我的回应慢30秒?似乎有点苛刻! – Chris

+0

您的回复在我发布了我的信息之后才会显示在我的信息页上。当它第一次出现时,它没有解释性文字。好'哦所以快速绘制...并修改 –

+0

是的,我完全理解,因为我看到了编辑后添加解释后的时间戳。我100%肯定你没有复制或任何事情,这就是为什么我很惊讶,有人给你,希望下来的选民可以解释或收回投票(我只能假设它是为了复制,但谁知道)。 – Chris