ユーザーがシステムに製品を追加し、製品名で検索できるプログラムがあります。 現時点で同じ名前の2つの製品を入力できることを除いて、すべてが正常に機能しています。私はこれを許さないプログラムが必要です。メソッドはテキストファイルへのデータの保存を中止しているようです
「追加」ボタンに割り当てられたメソッドがあり、製品名、顧客名、ファームウェアの場所がテキストファイルに保存されます。
private void button_Click(object sender, RoutedEventArgs e)
{
bool found = false;
string searchTerm = productNameTextBox.Text.ToUpper();
if ((productNameTextBox.Text == "") || (customerNameTextBox.Text == "") || (firmwareLocationTextBox.Text == ""))
{
MessageBox.Show("Please fill in all the text boxes");
}
else if (Contains(searchTerm) == true)
{
MessageBox.Show("Product already added");
}
else
{
string inputCustomerName = customerNameTextBox.Text.ToUpper();
string inputProductName = productNameTextBox.Text.ToUpper();
string inputFirmwareLocation = firmwareLocationTextBox.Text;
try
{
Product newProduct = new Product(inputProductName, inputCustomerName, inputFirmwareLocation);
newProduct.Save("Products.txt");
File.AppendAllText("ProductNames.txt", inputProductName + Environment.NewLine);
MessageBox.Show("Product added");
emptyTheTextBoxes();
}
catch
{
MessageBox.Show("Product could not be added");
}
}
}
は、私はまた、ユーザーの製品名は、既に格納されているかどうかを確認するために、テキストファイルを検索し、ブールを返します方法を行っている。ここではその方法です。これはメソッドです:
public bool Contains (string searchTerm)
{
string line;
bool found = false;
System.IO.StreamReader file = new System.IO.StreamReader("ProductNames.txt");
while ((line = file.ReadLine()) != null)
{
if (line.Contains(searchTerm))
{
found = true;
break;
}
}
if (found == true)
{
return true;
}
else
{
return false;
}
file.Close();
}
私は入力を保存しようとすると、メッセージボックスが「製品を追加することができませんでした」と言って表示されます。しかし、メソッドを呼び出すelse if文をコメントアウトすると、うまく動作します。
メソッドが呼び出されたときにファイルを開いている可能性があり、正しく閉じていない可能性があります。だから私は 'file.Close()'を追加し、それは違いをもたらさなかった。 私はちょうどどこかで愚かな間違いをしたような気がしますが、数時間私を悩ませています!間違いなく目の新鮮なペアをありがとう!私は間違った場所に)(file.closeを持っていた
おかげ ルーシー
catchを変更して例外をキャッチし、「製品を追加できませんでした」ではなくエラーメッセージを出力します。それは間違っていることを教えてくれるでしょう。 – sr28
'catch'を' catch(Exception ex) 'と' MessageBox.Show( "..") 'を' MessageBox.Show(ex.ToString()) 'に変更し、結果のテキストを投稿します。カスタムメッセージは手伝ってくれます。例外はあります。 @ sr28 1秒速く。< – C4u
@ C4u - hehe、私の説明はあまり分かりません。 – sr28