((控制)名称)是什么意思?

时间:2014-04-03 13:55:48

标签: c# loops controls

我一直在使用此((Control)name)一段时间,但我不了解括号的构造及其含义。

例如,当我循环浏览页面上的控件时,我这样做:

foreach (Control ctrl in Booking_Quote.Controls)
{
    if (ctrl is Panel)
    {

        foreach (Control tb in ctrl.Controls)
        {
            if (tb is TextBox)
            {
                ((TextBox)tb).Text = "Hello world";

            }
            else
            {

            }
        }
    }
}

我想了解((TextBox)tb)的含义。

4 个答案:

答案 0 :(得分:0)

这是一种类型转换,让编译器知道tb对象实际上是TextBox对象。

答案 1 :(得分:0)

这是演员。在这段代码中:

if (tb is TextBox)
{
    ((TextBox)tb).Text = "Hello world";
}

您正在将tb转换为TextBox类型,以便访问Text媒体资源。如果没有强制转换,它将保持Control类型,并且Text属性将无法使用。

答案 2 :(得分:0)

这意味着您将对象转换为TextBox(或Control

在你的例子中,你写了这个:

if (tb is TextBox)
{
   ((TextBox)tb).Text = "Hello world";
}

如果tbTextBox,那么您可以将对象转换为TextBox以访问其方法并根据需要设置值。

您可以进行显式转换,如果转换失败则抛出异常,或者您可以使用as operator转换对象,如果转换失败,将返回null,如下所示:

(tb as TextBox).Text = "Hello world";

答案 3 :(得分:0)

由于Control可能没有Text属性,因此首先通过该行检查当前Control tb是否为TextBox

if (tb is TextBox)
{
....
}

然后在使用Control tb作为TextBox之前,首先需要将其显式转换为TextBox才能访问Text属性。

您可以通过在括号内使用Type对象前置变量来完成此操作,在本例中为(TextBox) tb

请参阅Casting and Type Conversions (C# Programming Guide)