【发布时间】:2008-11-21 18:31:58
【问题描述】:
所以我不太确定为什么会发生这种情况,但我正在运行一些 DataRows,其中有我想要设置的控件名称、属性和值。一切正常,除非我设置按钮的 TEXT 属性。由于某种原因,点击事件被称为...
这是我得到的一些代码:
string controlName, value, property;
Control currentControl = null;
System.Reflection.PropertyInfo propertyInfo = null;
// run through all rows in the table and set the property
foreach (DataRow r in languageDataset.Tables[_parentForm.Name].Rows)
{
controlName = r["ControlName"].ToString().ToUpper();
value = r["Value"].ToString();
property = r["Property"].ToString();
// check all controls on the form
foreach (Control c in formControls)
{
// only change it if its the right control
if (c.Name.ToUpper() == controlName)
{
propertyInfo = c.GetType().GetProperty(property);
if (propertyInfo != null)
propertyInfo.SetValue(c, value, null); ******Calls Event Handler?!?!******
//
currentControl = c;
break;
}
}
}
那么为什么它会在设置值时调用事件处理程序呢?这是我设置它的原因:
<SnappletChangePassword>
<ControlName>buttonAcceptPassword</ControlName>
<Property>Text</Property>
<Value>Accept</Value>
</SnappletChangePassword>
【问题讨论】:
-
您确定它调用的是 Click 处理程序而不是 TextChanged 处理程序吗?现在尝试重现 - 有趣的一个......
标签: winforms reflection c#-2.0