gpt4 book ai didi

c# - 试图引发事件 c#

转载 作者:太空狗 更新时间:2023-10-29 22:12:34 25 4
gpt4 key购买 nike

我一直在研究有关此的许多其他答案和示例,但我对如何设置它越来越困惑。我需要根据表单类中 performMove 方法的结果在 Robot 类中引发一个事件。我知道我不能从另一个类(class)提出这个事件,所以我所拥有的显然是行不通的。但我真的不明白如何正确设置它。我已经阅读了有关 codeProject、dreamInCode 和本网站的委托(delegate)和事件文章,以及许多其他文章。这是针对初学者的 c# 类(class),我对此很陌生,因为我相信每个人都可以说:)

namespace Assignment12
{
public delegate void ErrorHandler();

public partial class frmRobot : Form
{
Robot moveRobot = new Robot();

public frmRobot()
{
InitializeComponent();
reset_Position();
current_Position_Display();
moveRobot.outOfRange += new ErrorHandler(moveRobot.coor_Within_Range);
}
...

private void performMove()
{
Point loc = lblArrow.Location;
int x = moveRobot.Move_Robot_XAxis(loc.X);
int y = moveRobot.Move_Robot_YAxis(loc.Y);
if (x < -100 && x > 100)
{
moveRobot.outOfRange();
x = loc.X;
}
if (y < -100 && y > 100)
{
moveRobot.outOfRange();
y = loc.Y;
}
this.lblArrow.Location = new Point(x, y);
current_Position_Display();
}

class Robot
{

public event ErrorHandler outOfRange;
...
public void coor_Within_Range()
{
System.Console.WriteLine("TestOK");

}
}

最佳答案

这个问题比较迷惑。

您应该问自己的问题是:谁负责政策的宣布和执行?您有两个实体:“表单”和“机器人”。你有一些关于机器人的合法地位的政策。哪个类(class)负责制定该政策? 机器人是否知道它何时超出范围,并将这一事实告知表单?或者 表单 是否知道机器人何时超出范围,并将该事实通知机器人

希望被通知的是事件监听器希望通知其他人违反策略的事情是事件来源。完全不清楚这些事情中的哪一个你想成为听众,哪个你想成为源头。但是您违反的规则很明确:事件监听器不是允许在事件发生时说的事情 音乐会的人不会站起来向钢琴家大声指示要按什么键!那是钢琴家的决定,听众只能决定是否听,以及如何 react 。

如果表单决定机器人何时超出范围,则机器人 需要成为监听器。如果机器人要决定表单何时超出范围,则表单 需要成为监听器。现在您已将 form 作为监听器,但当它超出范围时,它正试图告诉 robot

关于c# - 试图引发事件 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com