2016-09-21 6 views
0

私はかなり面白い質問がありますが、私はC#を初めて使用しています。だからPLZヘルプ。私のプログラムにはボタン付きのメインフォームがあります。このボタンをクリックすると、別のフォームが表示されます。このサブフォームには、「戻る」ボタンと「保存」ボタンがあります。 「保存」をクリックすると、データが保存され、ブラウザが開き、ファイルを選択できます。 「戻る」をクリックすると、サブフォームを閉じるだけです。私の問題は、それを "停止"できないことです。サブフォームを閉じた後(そして "return"を使用していても)、ブラウザを開くためのメインフォームで書かれたメソッドに進み、別の "if"がfalseになるまで続けます。どうすればそこに止めることができますか? (BTWは、開いているブラウザメソッドがメインフォームで書かれている理由は、メインフォームから開く必要のあるいくつかのサブフォームがあり、すべてが同じスタイルであるということです)。 編集:次に操作を終了します

private void button8_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       GuaranteesForm frm = new GuaranteesForm(Convert.ToInt32(txtProjectReferenceCode.Text), 
        txtIndent.Text, 7, ""); 
       frm.ShowDialog(); 
       lblId.Text = _entit.C02_ProjectDocuments.OrderByDescending(i => i.ID).First().ID.ToString(); 
       UploadFirst(); 
       lblId.Text = ""; 
       RefreshData(); 
      } 
      catch (Exception) 
      { } 

     } 

まず、ロードする方法:私は

private void btnBack_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
      MessageBox.Show("No Data was saved"); 
      return; 
     }` 

を持つサブフォーム(GuaranteesForm)で そして、それがメインフォームに行く

private void UploadFirst() 
    { 

      OpenFileDialog opf = new OpenFileDialog { Multiselect = true }; 
      opf.ShowDialog(); 


      if ((opf.FileNames.Any())) 
      { 
       tempDictionary.Clear(); 

       foreach (var fileName in opf.FileNames) 
       { 
        FileInfo f = new FileInfo(fileName); 
        lstFile.Items.Add(f.Name); 
        tempDictionary.Add(f.FullName, f.Name); 
       } 
      } 
      else 
      { 

       MessageBox.Show("File Was NOT saved !"); 
       return; 
      } 

もしIそれを押し戻すとブラウザが開き、ブラウザが閉じて表示されます:ファイルは保存されませんでした

+0

から削除し、有効な' DialogResult'を返すかどうかをメインフォームでチェックしてください。 – ASh

+1

コードを入力してサブフォームを開いたり閉じたりする方法を見てみましょう。あなたのコードを見てみましょう – Ogbe

答えて

0

ShowDialogメソッドは、ダイアログが閉じられるまで現在のメソッドを中断し、中断されたメソッドを続行します。 btnBack_Clickメソッドreturnステートメントは、メインフォームにはの効果がありません。メインフォームにユーザーが何を決定したかを伝える必要があります。これはDialogResultプロパティを使用して行うことができます。 、ファイルを起こさなければならないボタンのイベントハンドラで

private void btnBack_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("No Data was saved"); 
    DialogResult = DialogResult.Cancel; // this also closes the dialog 
} 

保存するClose()の代わりにDialogResult = DialogResult.OKを使用します:

ダイアログでthis.Close()を使用しての代わりにDialogResult = DialogResult.Cancelが使用

private void btnSave_Click(object sender, EventArgs e) 
{ 
    DialogResult = DialogResult.OK; // this also closes the dialog 
} 

メインフォームでは、ユーザーの決定に応じて行動することができます。

if (frm.ShowDialog() != DialogResult.OK) 
{ 
    // bail out 
    return; 
} 

// continue showing the browser and saving the file 

PS。 ButtonにはDialogResultというプロパティがあり、イベントハンドラを必要とせずに、ダイアログ結果を自動的に設定し、DialogResult.None以外の値を持つときにフォームを閉じます。

+0

それは美しく機能しました。ありがとう、ありがとう、ありがとう。あなたは命を救う人です! – Zoe

0

"保存"ボタンイベントハンドラのサブフォームからuploadfirst()メソッドを呼び出す必要があります。サブフォームセット `DialogResult`で" button8 "イベントハンドラ

関連する問題