Form1 ボタン クリック イベントに次の行があります。
Process.Start(Path.GetFullPath(zippedFileDirectory));
このディレクトリの場所を開いているだけです。次に、別の行があります。
Process.Start(Path.GetFullPath(temp));
最初のボタンをクリックしてから 2 番目のボタンをクリックすると、プロセスごとに 2 つのウィンドウが開きます。
今、プログラムを閉じているので、Form1 の終了イベントで、この 2 つのプロセスを強制終了したいと考えています。
他の部分では、私は何をしますか?
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are you Sure you want to Exit. Click Yes to Confirm and No to continue", "WinForm",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
else
{
}
}
編集:
私はForm1でトップを追加しました:
private Process zipFileDirectoryProcess;
次に、メソッド内の下部で私がした:
private void Compress()
{
string zipFileName = "Diagnosis_Files.zip";
string source = contentDirectory;
string output = zippedFileDirectory;
string programFilesX86 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86)
+ "\\Diagnostic Tool\\7z.dll";
if (File.Exists(programFilesX86))
{
SevenZipExtractor.SetLibraryPath(programFilesX86);
}
string programFiles = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles)
+ "\\Diagnostic Tool\\7z.dll";
if (File.Exists(programFiles))
{
SevenZipExtractor.SetLibraryPath(programFiles);
}
SevenZipCompressor compressor = new SevenZipCompressor();
compressor.ArchiveFormat = OutArchiveFormat.Zip;
compressor.CompressionMode = CompressionMode.Create;
compressor.TempFolderPath = System.IO.Path.GetTempPath();
string t = Path.Combine(output, zipFileName);
compressor.CompressDirectory(source, t);
zipFileDirectoryProcess.Start(Path.GetFullPath(zippedFileDirectory));
this.TopMost = true;
}
次の行を追加しました。
zipFileDirectoryProcess.Start(Path.GetFullPath(zippedFileDirectory));
しかし、次の行でエラーが発生します。
Error 1 Member 'System.Diagnostics.Process.Start(string)' cannot be accessed with an instance reference; qualify it with a type name instead
この行を追加する前に、次の行がありました。
Process.Start(Path.GetFullPath(zippedFileDirectory));
そして、それはうまくいったのに、なぜ今このエラーが発生したのですか?