以下语句运行时出现以下错误
“实例方法不能具有空的this ”this.orderLogo1.onValueChanged += new EC.Controls.orderLogo.valuechange(this.orderLogo1_onValueChanged);
“实例方法不能具有空的this ”this.orderLogo1.onValueChanged += new EC.Controls.orderLogo.valuechange(this.orderLogo1_onValueChanged);
/// <summary>
///
/// </summary>
/// <param name="status"></param>
public delegate void valuechange(string status);
/// <summary>
/// 换行
/// </summary>
public event valuechange onValueChanged;
/// <summary>
/// 状态
/// </summary>
public string status
{
get
{ if (cmb_logo.SelectedIndex > -1)
{
return cmb_logo.SelectedValue.ToString();
}
else
{
return "";
}
}
}
public string statusCaption
{ get
{ if (cmb_logo.SelectedIndex > -1)
{
return cmb_logo.Text;
}
else
{
return "";
}
}
} private void cmb_logo_SelectedValueChanged(object sender, EventArgs e)
{
if (onValueChanged != null)
{
onValueChanged(status);
}
} private void orderLogo_Load(object sender, EventArgs e)
{
cmb_logo.ImageList = GetImageList.OrderOrderLogoImages ();
cmb_logo.DisplayMember = "name";
cmb_logo.ValueMember = "id";
cmb_logo.ImageIndexMember = "imageid";
cmb_logo.DataSource = DevFunc.DtOrderLogo ();
cmb_logo.SelectedIndex = 3;
}
this.orderLogo1.onValueChanged += new EC.Controls.orderLogo.valuechange(this.orderLogo1_onValueChanged);如果我没眼花,蓝色与红色部分是同一个东西吧。问题应该是出在这里,蓝色部分是一个委托,而红色部分应该是你作为参数的某个方法。比如说这样:
private void OnLoad(object sender, EventArgs e)
{
this.orderLogo1.onValueChanged += new EC.Controls.orderLogo.valuechange(this.ImplementationMethod);
}private void ImplementationMethod(string status)
{
//... ...
}
private void cmb_logo_SelectedValueChanged(object sender, EventArgs e)
{
if (onValueChanged != null)
{
onValueChanged(status);
}
}
this.orderLogo1.onValueChanged += new EC.Controls.orderLogo.valuechange(this.orderLogo1_onValueChanged);
可以简单地理解为下面这样的一句。
this.orderLogo1_onValueChanged += this.orderLogo1_onValueChanged知道这个意思了吗?
{
onValueChanged(status);
}你需要保证status不为空才能调用该事件。
public string status
{
get
{ if (cmb_logo.SelectedIndex > -1)
{
return cmb_logo.SelectedValue.ToString();
}
else
{
return "";
}
}
}