我正在将动态指定的用户控件加载到父(用户)控件中的占位符中,如下所示:
// dynamically load instance of chosen chart control
string chartClassName = ConfigurationManager.AppSettings["ChartControlClass"];
_chartControl = (IOutputChart)LoadControl(chartClassName + ".ascx");
// add to place-holder
if (chartClassName == "OutputChart_Dundas") phChart.Controls.Add((OutputChart_Dundas)_chartControl);
else if (chartClassName == "OutputChart_Microsoft") phChart.Controls.Add((OutputChart_Microsoft)_chartControl);
else if (chartClassName == "OutputChart_Telerik") phChart.Controls.Add((OutputChart_Telerik)_chartControl);
显然,不必每次都明确地施放_chartControl
变量更好 - 是否有更清洁的方法?每个用户控件都实现IOutputChart
接口;但是,我不能直接使用它,因为Controls.Add()
需要一个Control
对象。
答案 0 :(得分:3)
你能不能将所有这些转换为Control
?
phChart.Controls.Add((Control)_chartControl);
答案 1 :(得分:2)
我假设您的所有控件都来自Control
基类。那么为什么不将_chartControl
转换为Control
并添加它。
_chartControl = (Control)LoadControl(chartClassName + ".ascx");
phChart.Controls.Add(_chartControl);