我有一个form,里面有很多picturebox作为city的图示,又有一个city类,现在需要在点击picturebox的时候,在form.labelbox.text中显示picturebox对应的city的name属性。
public class city
{
//城市名称
private string _cityname;
public string CityName
{
get
{
return _cityname;
}
set
{
_cityname = value;
}
} //城市ID
private int _id;
public int ID
{
get
{
return _id;
}
} private PictureBox _cityimage;
public PictureBox CityImage
{
get
{
return _cityimage;
}
set
{
_cityimage = value;
_cityimage.Click+=new EventHandler(cityimage_Click);
}
} private void cityimage_Click(object sender, EventArgs e)
{
//需解决;
}
}
以上是city类中和问题有关的代码,就是city类3个属性的定义
form中引用了city类,会申明一个city的数组,同时把form中的的一个picturebox会赋值给对应的city[i].CityImage,现在需要的是cityimage_Click事件能够返回给form,使form中的labelbox.text=city[i].cityname。但问题是city不能改变form中的值。
那么现在cityimage_Click我该怎么写,或者是不是需要在city里申明一个变量,在form中用一个timer依次判断city[i]的这个变量是否改变,如果是,则获取i对应的city[i].cityname来赋值给form.labelbox.text。请各位有钱出钱有力出力,帮偶解决这样一个问题
public class city
{
//城市名称
private string _cityname;
public string CityName
{
get
{
return _cityname;
}
set
{
_cityname = value;
}
} //城市ID
private int _id;
public int ID
{
get
{
return _id;
}
} private PictureBox _cityimage;
public PictureBox CityImage
{
get
{
return _cityimage;
}
set
{
_cityimage = value;
_cityimage.Click+=new EventHandler(cityimage_Click);
}
} private void cityimage_Click(object sender, EventArgs e)
{
//需解决;
}
}
以上是city类中和问题有关的代码,就是city类3个属性的定义
form中引用了city类,会申明一个city的数组,同时把form中的的一个picturebox会赋值给对应的city[i].CityImage,现在需要的是cityimage_Click事件能够返回给form,使form中的labelbox.text=city[i].cityname。但问题是city不能改变form中的值。
那么现在cityimage_Click我该怎么写,或者是不是需要在city里申明一个变量,在form中用一个timer依次判断city[i]的这个变量是否改变,如果是,则获取i对应的city[i].cityname来赋值给form.labelbox.text。请各位有钱出钱有力出力,帮偶解决这样一个问题
public delegate void CitySelectHandler(string cityName);public class city
{
public event CitySelectHandler CitySelect;
......
private void cityimage_Click(object sender, EventArgs e)
{
//需解决;
CitySelect(_cityname);
}
......
}form
{
.....
构造函数
{
city.xx += ....(city_select);
}
.....
private coid city_select(string cityName)
{
labelbox.text = cityname;
}
}
如下:
public delegate void City_PictureClicked(PictureBox sender,string CityName,string CityID);public class city
{
public event City_PictureClicked PictureClicked();
//城市名称
private string _cityname;
public string CityName
{
get
{
return _cityname;
}
set
{
_cityname = value;
}
} //城市ID
private int _id;
public int ID
{
get
{
return _id;
}
} private PictureBox _cityimage;
public PictureBox CityImage
{
get
{
return _cityimage;
}
set
{
_cityimage = value;
_cityimage.Click+=new EventHandler(cityimage_Click);
}
} private void cityimage_Click(object sender, EventArgs e)
{
//需解决;
if(PictureClicked!=null) PictureClicked(cityimage,cityname,ID );
}
}
然后在Form中:city objCity=new city();
city.PictureClicked+=new EventHandler(city_PictureClicked)
private void city_PictureClicked(PictureBox sender,string CityName,string CityID)
{
//在这里进行处理
}
系统报错:错误 1 “city_PictureClicked”的重载均与委托“System.EventHandler”不匹配
系统报错:错误 1 “city_PictureClicked”的重载均与委托“System.EventHandler”不匹配呵呵,这个是没有在编译器里面写的,你直接在编译器面书写的话,是可以不这样的
http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx#sec5