やあみんな、ここでちょっとした問題を抱えています。
そのため、ファイルをロードするロード ボタンと、ファイルを保存する保存ボタンがあります。プログラムを閉じる終了ボタンもあります。私が助けを必要としているのは、プログラムを閉じるときに、閉じられていない StreamReader または StreamWriter があるかどうかを確認することです。
私がこれまでに持っているものは次のとおりです。上部で、私はこれらの人を宣言します
bool isDirtyBoolean = false;
string moreData = "";
私のロードボタンはこのように見えます
private void loadToolStripMenuItem_Click(object sender, EventArgs e)
{
//begin in the project folder
openFileDialog1.InitialDirectory = Directory.GetCurrentDirectory();
//display the file open dialog box
DialogResult responseDialogResult;
responseDialogResult = openFileDialog1.ShowDialog();
if (responseDialogResult != DialogResult.Cancel)
{ //check that user did not click the cancel button
//create a streamreader object for the selected file,
//read the file contents,
//and display each line of the file in the list box
StreamReader nameStreamReader = new StreamReader(openFileDialog1.FileName);
while (nameStreamReader.Peek() != -1)
{
freindsDataListBox.Items.Add(nameStreamReader.ReadLine());
}
nameStreamReader.Close();
isDirtyBoolean = true;
}
}
そして、私の保存ボタンは次のようになります
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
//begin in the project folder
saveFileDialog1.InitialDirectory = Directory.GetCurrentDirectory();
//display the file save dialog
DialogResult responseDialogResult;
responseDialogResult = saveFileDialog1.ShowDialog();
if (responseDialogResult != DialogResult.Cancel)
{ //check that user did not click the cancel button
//create a streamWriter object and
//then write out the list box items to the file
StreamWriter nameStreamWriter = new StreamWriter(saveFileDialog1.FileName);
int count = freindsDataListBox.Items.Count;
for (int i = 0; i < count; i++)
{
nameStreamWriter.WriteLine(freindsDataListBox.Items[i]);
}
nameStreamWriter.Close();
isDirtyBoolean = true;
freindsDataListBox.Items.Clear();
}
}
私の終了ボタンは次のようになります
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
if (isDirtyBoolean == false)
nameStreamReader.Close();
nameStreamWriter.Close();
this.Close();
}
私がやろうとしたのは、bool isDirtyBoolean を一番上に設定し、Stream Reader または Writer が閉じたときに bool 値を true に設定することでした。そのため、アプリを終了すると、まだ false に設定されている場合は、とにかくそれらを閉じます。
しかし、 isDirtyBoolean の値はこれらのプライベートな無効ボタンであり、それらにアクセスできないため、これは機能しません。