2017-11-24 8 views
-1

現在、C#アドインを使用しているEnterprise Architectのフォームを作成しています。 以前はEnterprise Architectの応答しない状態になっていたので、私はform.ShowDialog()を使用していません。フォームを閉じると、Enterprise Architectが最小化されています

バックエンドプロセスは、現在のフォームの親としてform.Show()を使用して動作する必要があるEnterprise Architectですが、フォームがform.close()で終了するときに問題が発生するため、EAも最小化されています。

フォームを閉じた後にEAが最小化されないようにフォームを表示して閉じるのを助けてください。前もって感謝します。

class CreateContentsForForm 
{ 
    ModifyForm() 
    {   
     Form newForm=new Form(); 
     //adding contents to form 

     //display form 
     var proc = Process.GetProcesses().Where(x => x.ProcessName == "EA").First(); 
     IWin32Window w = Control.FromHandle(proc.MainWindowHandle); 
     Form.Show(w); 
     Application.Run();//this is added for navigating through datagridview using tab key in form 
    } 
} 
+0

を親切に[MCVE]を提供してください。 – Enigmativity

+0

私は質問を編集しました。プレビューチェック – rashmi

+0

EAアドインでモーダルを非モーダルフォームとして使用しましたが、EAが応答しない、または最小化されることはありませんでした。 –

答えて

0

EAががあなたのアドインから

可能性モードを応答なしになった場合:大きなモデルで

  • アドインのお得な情報を
  • コードロジックを最適化する必要があります。

その場合は、backgroundWorkerをwinformsで使用してください。

backgroundWorker1_DoWork

backgroundWorker1_RunWorkerCompleted

これはトリックを行う必要があります。回避策として

+0

バックグラウンドワーカーを使ってフォームを表示することはお勧めしません。バックグラウンドワーカーを使うことは、他のすべての可能性を排除した最後の手段だと私は言います。マルチスレッド化は、まったく新しいワームの缶を開きます。 –

-1

、むしろフォームを閉じるよりも、あなたの代わりにフォームを隠すことができます:

Form.Hide(w); 
+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューから](/レビュー/低品質の投稿/ 18444698) – Isma

+0

こんにちは、こんにちは、とstackoverflowへようこそ。 Form.Hide(w)の代わりに['newForm.Hide()'](https://msdn.microsoft.com/en-us/library/szcefbbd(v = vs.110).aspx) ?もしそうなら、質問を明確にするためにあなたの質問を編集できますか? – dbc

関連する問題