如何使用相同的变量使这个VB代码在C#中工作?

时间:2013-05-07 23:36:24

标签: c# vb.net vb.net-to-c#

我正在尝试弄清楚如何使用与VB相同的隐式定义将以下示例代码转换为C#。我知道我可以将按钮和通用控件定义为两个对象并使其工作,但我想在C#中使用相同的变量“ctlHTML”,就像VB一样。有人可以为此提供帮助吗?

Sub MySub(varInput As String, pnl As Panel)
    Dim ctlHTML = Nothing
    Select Case varInput
        Case "btn"
            ctlHTML = New HtmlButton
        Case "lbl"
            ctlHTML = New HtmlGenericControl()
    End Select
    With ctlHTML
        .Style.Add("font-size", "14px")
    End With
    pnl.Controls.Add(ctlHTML)
End Sub

3 个答案:

答案 0 :(得分:4)

您将无法直接转换代码。你必须给你的变量一个类型。支持所有成员的继承链中最高的类是HtmlControl

HtmlControl control = null;
switch(varInput)
{
    case "btn":
        control = new HtmlButton();
        break;
    case "lbl":
        control = new HtmlGenericControl();
        break;
}

if(control != null)
{
    control.Style.Add("font-size", "14px");
    pnl.Controls.Add(control);
}

答案 1 :(得分:4)

为了修改Style属性,控件至少需要为HtmlControl。因此,您需要将变量ctlHtml声明为该类型。

您还应检查以确保ctlHtml已正确初始化。

我相信你的代码应该是这样的:

public void MySub(string varInput, Panel pnl)
{
    HtmlControl ctlHtml;
    switch(varInput)
    {
        case "btn":
            ctlHtml = new HtmlButton();
            break;
        case "lbl":
            ctlHtml = new HtmlGenericControl();
            break;
        default:
            ctlHtml = null;
            break;
    }
    if (ctlHtml != null)
    {
        ctlHtml.Style.Add("font-size", "14px");
        pnl.Controls.Add(ctlHtml);
    }
}

答案 2 :(得分:1)

由于HtmlGenericControlHtmlButton都继承自HtmlControl,因此您可以将ctlHTML声明为该类型(HtmlControl)并且它将起作用。

见这里:http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlcontrol.aspx