あなたの希望する出力を得るには、にイベントと委任をする必要があります。
例を挙げておきます。
Form1とForm2の2つのフォームがあるとします。
- をForm1はのDataGridViewと検索ボタンが含まれています。
- Form2をはOKという名前テキストボックスとボタンが含まれています。
- DataGridViewのは、従業員名で満たされ、それが名前によって検索する必要があると仮定すると。
- 検索ボタンを押したときにForm2が開き、フォーム2に従業員名を入力した後、ok butttonが押されると、従業員名が入力されたときにForm2が閉じられ、データがフィルタリングされます。説明する必要はありませんがやってコードの上にあるものを
private void btnSearch1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
}
:Form1の
コード:あなたは、以下のような何かを行うことができ、上記のようにその結果を取得する
。今< = :)
、Form2のため
コード:
public delegate void OnSearch(string employeeName);
public partial class Form2 : Form
{
public event OnSearch OnSearchClick;
protected virtual void FireEvent(string employeeName)
{
if (OnSearchClick != null)
{
OnSearchClick(employeeName);
}
}
public Form2()
{
InitializeComponent();
}
private void btnSearch_Click(object sender, EventArgs e)
{
string employeeName = txtEmp.Text;
FireEvent(employeeName);
this.Close();
}
}
としては、私はあなたがイベントを使用してを委任し、ここではすべてのForm2である必要語りました。
Form2ので文字列パラメータが含まれていますOnSearchという名前デリゲートあります。 イベントOnSearchClick、代議員OnSearchがあります。 ここでは、デリゲートがクラスレベルで配信されました。
次に、このメソッドが呼び出されたときにイベントのOnSearchClickをトリガするFireEvent関数が作成されます。
btnSearchボタンをクリックするとFireEventが呼び出されます。ここでemployeeNameがメソッドに渡されると、メソッド内でより多くのパラメータまたはオブジェクトを渡すことができ、Form1でそれを取得してフィルタを適用できます。今、あなたはFRM2を書くとき上記のようFROM1ため
private void btnSearch1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.OnSearchClick += new OnSearch(frm2_OnSearchClick);
frm2.Show();
}
void frm2_OnSearchClick(string employeeName)
{
MessageBox.Show(employeeName);
}
編集コード、: 今
Form1のコードを編集するための時間。 intellisenseあなたにイベントを与えるOnSearchClickそれを選択し、1つのスペースのタイプ+ =の後にタブを押すを押してください。上記のコードを表示できるので、frm2_OnSearchClickイベントが生成されます。
すべてのパラメータをForm2にForm1に渡します(私は1つだけ渡しました)。frm2_OnSearchClickイベントにDataGridViewをバインドするロジックを記述します。
は今、あなたは(Form2の上で)検索ボタンをクリックするたびに、それは(Form1の中にある)frm2_OnSearchClickイベントを発射し、DataGridViewのがリフレッシュされます。
質問を適切な判読可能な形式にしてください。ご使用の
タグを使用して、あなたの質問にラインを壊すようにしてください。 – Priyank