1つのフォームと2つの.csファイルを作成しました。イベント委任モデルの下のコードでエラーが発生しています
第一のファイルはForm1.cs:
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Class1 _enemy;
private void button1_Click(object sender, EventArgs e)
{
_enemy = new Class1(this);
_enemy.LoopInteration += OnLoopInteration;
_enemy.MyMethod();
_enemy.LoopInteration -= OnLoopInteration;
}
private void OnLoopInteration(object sender, LoopCounterArgs e)
{
textBox1.Text = Convert.ToString(e.Iteration);
}
}
}
第二のファイルのClass1.cs:
namespace WindowsFormsApplication4
{
public class LoopCounterArgs : EventArgs
{
public int Iteration { get; set; }
public LoopCounterArgs(int iteration)
{
Iteration = iteration;
}
}
public class Class1
{
public event EventHandler<LoopCounterArgs> LoopInteration;
public Class1(Form1 form)
{
_form1 = form;
}
public void MyMethod()
{
for (int j = 1; j <= 20; j++)
{
LoopInteration?.Invoke(this, new LoopCounterArgs(j));
//Thread.Sleep(100);
}
}
private Form1 _form1;
}
}
し、Form1のフォームデザイン:
今取得しています次のエラーが表示されます。
*エラー1:
無効な表現用語 '。' C:プロジェクト\ WindowsFormsApplication4 \ WindowsFormsApplication4 \ Class1.csの29 32 WindowsFormsApplication4
エラー2 \ Visual Studioの 2013 \ 43060の\ドキュメント\ \ユーザー:
構文エラーは、 ':' Cを期待しました:プロジェクト\ WindowsFormsApplication4 \ WindowsFormsApplication4 \ Class1.csの29 33 WindowsFormsApplication4 \ Visual Studioの 2013 \ 43060の\ドキュメント\ \ユーザー*私が欲しいもの
は、そのユーザーのクリックでフォーム1のforループはclass1.csで実行され、結果はform1テキストボックスに表示されます。 厳密にEvent + Delegationモデルを使用します。
なぜ、あなたの 'Class1'がフォームを使用しないときにフォームへの参照を持っているのかは分かりませんが、どのラインに問題があるのか私たちには示されていません。 'using'ディレクティブを指定しなかったので、エラーメッセージの行番号をソースコード内の行にマップすることはできません。 –
しかし、それ以外の' class1.cs'は私のためにコンパイルします。何か間違っていることを示唆している。実際にはVisual Studio 2013を使用していますか?もしそうなら、あなたはnull条件演算子を使うことはできません...私はVS2015にアップグレードすることをお勧めします。 –
@JonSkeetはこの行にエラーを表示します LoopInteration?.Invoke(this、new LoopCounterArgs(j)); には構文エラーがあります。 私はVS 2012 –