C#无法在实例化事件之前订阅事件。用于从其他类更新UI
我正在制作一个非常简单的RPG作为学习语言的一种手段。从现在开始,您可以按“浏览”按钮。发生这种情况:C#无法在实例化事件之前订阅事件。用于从其他类更新UI,c#,oop,C#,Oop,我正在制作一个非常简单的RPG作为学习语言的一种手段。从现在开始,您可以按“浏览”按钮。发生这种情况: currentFight = new Combat(); currentFight.CombatStarted += new Combat.CombatStartedEventHandler(UpdateUI); currentFight.StartCombat(); 战斗构装师: public Combat() { Combatant = DatabaseLookUp.randG
currentFight = new Combat();
currentFight.CombatStarted += new Combat.CombatStartedEventHandler(UpdateUI);
currentFight.StartCombat();
战斗构装师:
public Combat()
{
Combatant = DatabaseLookUp.randGen();
}
public void StartCombat()
{
OnCombatStarted();
}
public delegate void CombatStartedEventHandler(object source, EventArgs args);
public event CombatStartedEventHandler CombatStarted;
protected virtual void OnCombatStarted()
{
if (CombatStarted != null)
// Checks if there are subscribers to the EnemyChanged event
//'this' class is the one sending the event, and we do not want to send any additional data
CombatStarted(this, EventArgs.Empty);
}
StartCombat功能:
public Combat()
{
Combatant = DatabaseLookUp.randGen();
}
public void StartCombat()
{
OnCombatStarted();
}
public delegate void CombatStartedEventHandler(object source, EventArgs args);
public event CombatStartedEventHandler CombatStarted;
protected virtual void OnCombatStarted()
{
if (CombatStarted != null)
// Checks if there are subscribers to the EnemyChanged event
//'this' class is the one sending the event, and we do not want to send any additional data
CombatStarted(this, EventArgs.Empty);
}
事件代码:
public Combat()
{
Combatant = DatabaseLookUp.randGen();
}
public void StartCombat()
{
OnCombatStarted();
}
public delegate void CombatStartedEventHandler(object source, EventArgs args);
public event CombatStartedEventHandler CombatStarted;
protected virtual void OnCombatStarted()
{
if (CombatStarted != null)
// Checks if there are subscribers to the EnemyChanged event
//'this' class is the one sending the event, and we do not want to send any additional data
CombatStarted(this, EventArgs.Empty);
}
“探索”按钮实例化一个新的作战对象。在Combat.cs的构造器中,它将自己当前的敌人场=设置为随机怪物生成器的结果
只有这样,我才能向战斗订阅更新UI方法。然后,我运行“开始战斗”方法,启动事件(并将很快执行其他操作)
这个解决方案的问题是,我想用运行事件确定器函数的代码替换onExploreButtonClicked
代码(如上),该函数是从一个单独的类调用的。确定者可以提出的一个选项是实例化一个新的作战对象。在新类中调用该对象后,我将无法从那里订阅该事件
我希望这个问题有意义。最理想的情况是,创建新的作战对象将在构造器中有一行“ping”用户界面,以打开一个新表单、更改第一个表单上的标签或类似的内容。如果我创建的战斗对象没有参数,它将创建一个随机怪物。但是,我还需要能够为战斗对象提供一个参数,该参数将启动与特定敌人的战斗
还是很新的编码,所以如果这可能没有意义,我可以发送一些源代码给别人!谢谢你们 不要描述代码,展示代码。不要描述代码,展示代码。