プロが教える店舗&オフィスのセキュリティ対策術

アプリ上のボタンを押すと以下のLoadData()が実行され、
データセットにcsvファイルの情報が代入されるのですが、
一度実行されるとソフトを再起動しないと、ボタンを押しても再度同じ動作をしてくれません。

今回の場合、フォームに入力された数値が変数expに代入され、
代入された数値をcsv内で検索し、ヒットすればその行だけ読み込むというプログラムですので、一度実行されても再度別の数値で同じ動作を繰り返し行いたいのです。

初歩的な事かと思いますが、どうすれば再起動しなくても同じ動作を繰り返すようになるのか教えてください、よろしくお願いします。


public void LoadData()
{
string path = @"C:\Documents and Settings\PC USER\デスクトップ\222.csv";

string strLine;//1行分のデータ
int p;
string exp;//この文字を含む行のみを読み込む

exp = textBox1.Text;


Boolean fileExists = System.IO.File.Exists(path);
if (fileExists)
{
System.IO.StreamReader sr = new System.IO.StreamReader(path, System.Text.Encoding.Default);
while (sr.Peek() >= 0)
{

strLine = sr.ReadLine();
p = strLine.IndexOf(exp);//指定文字が変数内にあるかどうかチェック
if (p > 0)
{


strData = CsvToArrayList1(strLine)[0];
Dbuse.Dbusetable.AddDbusetableRow
(
strData[0],
int.Parse(strData[1]),
strData[2],
strData[3],
strData[4]
);

}

else { }

}
sr.Close();
}

A 回答 (1件)

ボタンがイベント処理中の状態になっていませんか?



言い換えると、ボタンのClickイベントに対応付けした
イベントハンドラ処理(関数/メソッド)がちゃんと終了していないのでは?

もうちょっと具体的に書くと、
下記★★部分のどこかで処理が止まっているため、
次のClickイベント処理を開始できていないような気がします。
---------------
(ボタン押す)
 ↓
Clickイベントが発生
 ↓
Clickイベントハンドラが実行開始
 ↓
★★ここで処理が止まっています★★
 ↓
Clickイベントハンドラが終了
 ↓
Clickイベントが終了
 ↓
(次のイベントが処理可能になる)
------------------

デバッガを利用して
「LoadData()処理」や「ボタンのClickイベントに対応付けしたイベントハンドラ処理」が
 ・ちゃんと最後まで終了しているか
 ・無限ループに陥っていないか
 ・IO入力待ちで止まっていないか
などを確認すべきだと思いますよ。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
初心者な物でして、お恥ずかしながらデバッガを利用してこれらを確認する方法がわかりません…

この件に関してのみ再度質問させていただこうと思います。
解決への手がかりになりそうです、ありがとうございました。

お礼日時:2010/04/20 22:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!