これについての他の回答と例がたくさんありましたが、これを設定する方法がますます混乱しています。私は、フォームクラスのperformMoveメソッドの結果に基づいて、Robotクラスでイベントを発生させる必要があります。私は別のクラスからイベントを呼び出すことができないことを知っているので、私は明らかにうまくいきません。しかし、私は本当にこれを正しく設定する方法を掴んでいません。私は、codeProject、dreamInCode、そしてこのサイトのデリゲートとイベントの記事を他の多くの記事で読んだ。これは、初心者のC#クラスのためである、と私は誰もがイベント調達する:)イベントを起こそうとしているC#
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");
}
}
エラーがありますか? – Josh
申し訳ありません。 performMoveのmoveRobot.outOfRange()行が "エラーを発生させます。 'Assignment12.Robot.outOfRange'イベントは+ =または - =" –
の左側にのみ表示されます。この質問には、あなたがしたいことをやる方法を知らないという発言だけではないようです。あなたは何をしたいのかをより明確に記述できますか?たとえば、「別のクラスで呼び出されたときに、ファーストクラスでイベントを発生させるメソッドを1つのクラスに作成する必要があります。 –