前提・実現したいこと
### 補足情報(FW/ツールのバージョンなど) C# VisualStudio2019 .NetFramework4.7.2
> process.startで起動された②のフォームと、ある条件で表示された②のフォームはもしかして別物?
「ある条件で表示」とはどういうことでしょう? どのようにして表示するのかできるだけ具体的に説明していただけませんか?
コメントありがとうございます。
ファイル名を検索して、ヒットしたファイルの内容を表示させています。
その説明ではわからないです。
コードを見れば分かると言うことなのかもしれませんが、コードを読むのは閲覧者には負担が大きいのです。実際自分はまだ読んでません。
コード読めば分かるというなら、せめて「ある条件で表示」というのはどの行か分かるように書いてください。
書き換えてから FileSystemWatcher を作ってるんじゃないですか?
インデントがおかしいから気づきにくいけど、これ二つのメソッドを一つのメソッドのように書いてますよね?
妙な書き換えをしてデバッグもせず載せるんじゃなくて、回答者の手元で完全に動く最小限のコードを新しく作って書いてください。それで問題解決できたら自分のコードに反映させればいいんです。
SurferOnWww様
分かりにくい質問となってしまい申し訳ございません。コードにそれぞれコメントを記載してみました。「条件」については②のプロジェクトのコードに書いております。
求める動作をしない大きな原因はZuishinさんのご指摘のとおりだと考えますが、ご提示のコードもインデントが崩れていて回答、閲覧者には読みづらいです。それだけでも回答は離れていきます。コードの整形はVisual Studioでできますので、きれいに直しましょう。Visual Studioのメニューから「編集(E)」>
「詳細(V)」>「ドキュメントのフォーマット(A)」、です。
Zuishin様
コメントありがとうございます。「二つのメソッドを一つのメソッドのように」とはどの部分でしょうか。
dodox86様
コメントありがとうございます。Zuishin様からいただいたコメントをもとにコードを確認中です。
見直してみましたらコードが崩れていますね。。すみません。気を付けます。
> 「二つのメソッドを一つのメソッドのように」とはどの部分でしょうか。
その前に、このコードをそのまま Visual Studio に写してコンパイルできますか?
もちろん、デザイナ部分などわかりきったところはこちらでも補完できますが、元々のコードでミスをしているのか、それとも改変してこちらに書き写した段階でミスが混入したのかはこちらではわかりません。それでは問題の特定が困難です。
たとえば、明らかにコンパイルが通らないコードだった場合、そのコードを調べるよりも「実際にそのコードがコンパイル対象になっているのか」を調べた方が早いです。掲載したものとは違うコードをコンパイルしていたなんてことは、初心者にはよくあることですし、他にも色々と考えられる原因を全部潰していかなければいけません。
なので、指摘を受けた部分をこの teratail 上だけで編集するのではなく、すでに書きましたが、回答者の手元で完全に動く最小限のコードを新しく作り、それがコンパイル・実行可能で、問題が再現することを確かめた上で、それを掲載してください。
そうでなければ、実際のコードと teratail 上のコードの乖離が大きくなり、本当の原因がわかりません。
とりあえず不可解なのは、FileSystemWatcher を同じメソッドで二回作っていることと、余分なブレイスが混ざっていることで、その原因を私は、実際のコードと違うものを掲載しているからと推測しました。
あとはそれを潰してからの話なので、それ以上細かくは見ていません。
> コードにそれぞれコメントを記載してみました。「条件」については②のプロジェクトのコードに書いております。
以前として分からないのですが。
質問に書いてあるように、問題は「4.②のフォームが閉じられない」で、質問者さんは以下のことがその問題の原因と推定しているのですよね。
> process.startで起動された②のフォームと、ある条件で表示された②のフォームはもしかして別物?
前者は Form1_Load メソッド内で process.Start() で起動されたプロセスらしいと想像していますが、後者の「ある条件で表示」というのはどういうことか分かりません(少なくとも自分には)。
それが分からないと前者と後者で何が違うのか分からない。分からないから「別物」かどうかとかは分からないし、そこで思考停止してそれ以上考える気力がなくなります。
また前のスレッド https://teratail.com/questions/278253 の時のような見当違い&意味不明となっていて話が通じてないような気がします。
上のコメントで Zuishin さんが指摘されているように、問題を再現できる必要最低限のサンプルを作って質問を書き直してください。
皆様、ありがとうございます。
再現用のサンプルを作成中です。完成しましたら質問文を編集いたします。
> process.startで起動された②のフォームと、
何故そういうこと(process.startで起動)をする必要があるのか分かりませんが、可能ならば Form1 と Form2 は同じプロジェクト内に作って、Form1 から Form2 を初期化して表示すべきと思います。
サンプルを作る際に、それも検討してはいかがですか?
管理者権限に上げるときに Process.Start を使いますね。その辺りに問題が潜んでいるのかもしれません。
あなたの回答
tips
プレビュー