2017-08-28 5 views
2

Filterというフォームを1つ作成したいとします。そのフォームは、残りのすべてのフォームによって呼び出されます。例Winformsアプリケーションで前のフォームを呼び戻すには?

について

Iは10のフォームとつのフィルタ形状を有しています。 というフィルタボタンが10個のフォームすべてにあります。ユーザーがフィルタ]ボタンをクリックするたびので、Filter formは、いくつかのコンポーネントは、私は意志があると呼ばれ、値

ReportForm1

//Send Values to Filter Form 
private void OnButton1Click(object sender, EventArgs e) 
{ 
    this.Hide(); 
    FilterForm filter = new FilterForm(txtFieldName.Text,txtValues.Text); 
    filter.Show(); 
} 

//Get back the values from Filter Form 
public ReportForm1(string x, string y)  
{ 
    s1 = x; 
    s2 = y; 

    // I will do some process after I get back the values from Filter Form 
} 

フィルターフォーム

public filter(string FieldName, string Values)  
{ 
    s1 = FieldName; 
    s2 = Values; 

    // I will do some process after I get back the values from Filter Form 
} 

private void OnSubmitClick(object sender, EventArgs e) 
{ 
    this.Hide(); 

    //it has to send two variables to previous form. 
} 

に合格されますテキストボックス、コンボボックス、リスト、グリッド、ボタンクリック機能などのフィルタフォームを追加します。最後に、ユーザがボタンを送信すると、は、前のフォームに値を送信する必要があります。

ReportForm1 report1=new ReportForm1(x,y)のような形を呼び出すために私を提案しないでください。私はそれが以前のフォームを呼び出さなければならないことを期待しています。私が今まで私は新しいフォームを作成するので。 ReportForm2の場合、関数はFilterFormでも同じです。だから私はすべての形

答えて

3

のためのオブジェクトを作成しない代わりにShow()コールShowDialog()を呼び出すので

  1. ..ソリューションの下にこれを試してみてください。
  2. フィルタフォームのプロパティ(パブリック)に必要な値を割り当て、フィルタフォームのオブジェクトを使用してメインフォームの値にアクセスします。

メインフォーム:

private void OnButton1Click(object sender, EventArgs e) 
{ 
    FilterForm filter = new FilterForm(txtFieldName.Text,txtValues.Text); 
    if (filter.ShowDialog() == DialogResult.OK) 
    { 
     TextBox a = filter.a; //Here you can able to access public property from Filter form. 
    } 
} 

フィルタフォーム:

public class FilterFom 
{ 
    public TextBox a { get; private set; } 

    public filter(string FieldName, string Values)  
    { 
     s1 = FieldName; 
     s2 = Values; 
     a = new TextBox(); //Here I can assign value to public property of this class. 
    } 

    private void OnSubmitClick(object sender, EventArgs e) 
    { 
     this.DialogResult = DialogResult.OK; 
     this.Close(); 
    } 
} 
+0

私は1つの疑問を持っている '場合(filter.ShowDialog()== DialogResult.OK)'。それはダイアログボックスのように機能しますか?はいの場合、テキストボックス、グリッドコントロール、リストボックス、4ボタンのクリックイベントなどのコンポーネントを追加できますか? –

+0

@mohamedfaizはい。します。私の更新された答えを見てください。 –

関連する問題