gpt4 book ai didi

c# - 基于 Switch 枚举将对象转换到 WebControl?

转载 作者:行者123 更新时间:2023-11-30 22:24:54 25 4
gpt4 key购买 nike

我不确定这在 C# 中是否可行:

我有一个 userControl,其中有一个属性 inputType - 枚举有 3 个可能的选项,textBox、dropDownList 或 checkBox。

然后我想创建一个该类型的新对象并将其添加到 userControl 中的占位符:

我能做到:

object txt;
switch (_inputType)
{
case code.enums.inputType.textBox:
txt = new TextBox();
break;
case code.enums.inputType.dropDownList:
txt = new DropDownList();
break;
case code.enums.inputType.checkBox:
txt = new CheckBox();
break;
}

但是,我无法访问文本框、下拉列表或复选框的属性,因为 Visual Studio 不知道类型 - 我也无法将对象 - (TextBox)txt -as我不知道会是哪一个...

有没有办法做到这一点?还是我应该在 switch 中执行所有控制特定操作?

根据要求,理想情况下我希望 object txt 可用于页面的其余部分。所以switch语句之后就可以访问txt了。

我一定会想做的:

plcHolder.Controls.add(txt);

那部分没问题 - 它只是在此之前尝试访问控件的特定属性......我认为它无法完成......但最好始终与 SO 专家核实 :)

非常感谢,标记

最佳答案

如果您使用的是 .net 4.0framework,则可以使用 dynamic 变量

dynamic txt;
switch (_inputType)
{
case code.enums.inputType.textBox:
txt = new TextBox();
break;
case code.enums.inputType.dropDownList:
txt = new DropDownList();
break;
case code.enums.inputType.checkBox:
txt = new CheckBox();
break;
}

之后你可以得到它的控制类型..或者你可以直接使用喜欢

string boo = txt.Text;

或者如果你想用作复选框

你可以使用

bool checked = txt.Checked;

要阅读动态变量,请转到 http://msdn.microsoft.com/en-us/library/dd264736.aspx

关于c# - 基于 Switch 枚举将对象转换到 WebControl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com