1

我正在将动态指定的用户控件加载到父(用户)控件中的占位符中,如下所示:

// 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对象。

4

2 回答 2

3

你能不能把所有这些都转换成Control?

phChart.Controls.Add((Control)_chartControl);
于 2012-08-23T12:33:47.307 回答
2

我假设您的所有控件都派生自Control基类。那你为什么不投到_chartControlControl添加它。

_chartControl = (Control)LoadControl(chartClassName + ".ascx");
phChart.Controls.Add(_chartControl);
于 2012-08-23T12:36:15.923 回答