我应该看到它,但我不是...... 我有一个类来更改设备的模式,并包含一些图形自我实例化的按钮。为此,我需要实现该类,但可能会有多个该类的实例。
我创建了这个类并设置了一个静态变量MODE
,这样我将实例化的所有对象中只有一个(ALL将引用这个静态变量来知道模式是什么)。
当模式改变时,我有一个提升并发送到''''''''实际选择的模式的值。
我不能将单例NOR作为静态类,因为我有一些设计对象作为我实例化对象的按钮。我需要能够使用我的类中的设计以两种形式再创建两个对象,但是当模式更改时(例如按钮名称更改为mode3),我需要同步刷新它们。
所以我的问题是:我需要在我的类中使用另一个事件来刷新实例化的所有对象。 因此,有两个活动会发送到我的主要''''''而且它不干净。 我怎么能只发送一次事件并同时刷新我的对象呢?
一些代码:
public partial class Form3 : Form
{
changeMode newmodeclass;
changeMode newmodeclass2;
public Form3()
{
InitializeComponent();
newmodeclass = new changeMode();
newmodeclass2 = new changeMode();
changeMode.e_ModeChanged += new EventHandler<changeMode.Mode_Args>(changeMode_e_ModeChanged);//static event to permit the change of all the objects created
}
private void changeMode_e_ModeChanged(object sender , changeMode.Mode_Args e)
{
label1.Text = e.refreshed.ToString();
}
}
class changeMode
{
public static event EventHandler<Mode_Args> e_ModeChanged;//EVENTS FOR OUTSIDE
public class Mode_Args : EventArgs//events args (selected MODE)
{//return arguments in events
public Mode_Args(Int16 ivalue) { refreshed = ivalue; }//ctor
public Int16 refreshed { get; set; }//accessors
}
private static event EventHandler RefreshMode;//EVENT FOR REFRESHING MY OBJECTS
private static Int16 _ActualMode = 2;//MODE3=3, MODE2=2 or OTHERS=4 ACTUAL MODE AS STATIC
public Int16 ActualMode//MODE ACCESSOR
{
get { return _ActualMode; }
set
{
switch (value)
{
case 2:
_ActualMode = 2;
break;
case 3:
_ActualMode = 3;
break;
default:
_ActualMode = 4;
break;
}
if (e_ModeChanged != null) { e_ModeChanged(this, new Mode_Args(_ActualMode)); }//EVENT FOR OUTSIDE
}
}
public changeMode()//ctor
{
RefreshMode += new EventHandler(FObj_MdiAuto_RefreshMode);
}
protected virtual void FObj_MdiAuto_RefreshMode(object sender, EventArgs e)//RECALL actualmode accessor (which do the work twice)
{
ActualMode = _ActualMode;
}
protected virtual void bt_ChooseMode_Click(object sender, EventArgs e)//on click change mode
{
if (_ActualMode==3) ActualMode = 2;
else ActualMode = 3;
RefreshMode(this,EventArgs.Empty); //call event for refreshing all others object created
}
}
如果没有这个内部事件我怎么能刷新?
希望你理解我的问题,谢谢大家!!