DOBON.NET DOBON.NETプログラミング掲示板過去ログ

[.net2003]Loadプロシージャの再呼び出しって無理ですか?

分類:[.NET]

お世話になります。
DBからデータを持ってきて加工後、書き戻したり新規データとして登録する
アプリケーションを作っています。
ここで一仕事終えた後(DBに変更を加えた後)、アプリケーションに残ったデータを
クリアする方法を考えています。

自分としては、DataGridやデータを保持していたオブジェクトを全部Disposeして、
Loadプロシージャを呼び出せればアプリケーションの再起動をしなくても再起動
同様の処理になると思うのですが・・・。
やってみたら引数が足りないとエラーが出ました。
やはり無理なのでしょうか?
それとも上手くやれば出来るのでしょうか?
出来るのであればその方法を教えてください。
よろしくお願いします。
■No14788に返信(あおぞらさんの記事)
> 自分としては、DataGridやデータを保持していたオブジェクトを全部Disposeして、
> Loadプロシージャを呼び出せればアプリケーションの再起動をしなくても再起動

イベントは起こすものではなく protected に起きるものです。
Form 自体を破棄して Form を再表示すれば良いと思います。

> やってみたら引数が足りないとエラーが出ました。

これは sender と EventArgs を設定する必要があるためでしょう。


_________________________________________________________________________
じゃんぬ Microsoft MVP for Visual Developer - C#
  http://jeanne.wankuma.com/
  http://blogs.wankuma.com/jeanne/
じゃんぬねっと様
早速の返信、ありがとうございます。

> イベントは起こすものではなく protected に起きるものです。
> Form 自体を破棄して Form を再表示すれば良いと思います。
昔のCでMain関数をMain関数の中から呼び出すイメージで考えていましたが
Form自体を破棄とは盲点でした。

> これは sender と EventArgs を設定する必要があるためでしょう。
いつもイベントはコードエディタの上のやつで選んで自動生成なのでSenderとかの
設定はやったこともないしやり方もよく分かりません。
(ホントはそれじゃ駄目なんだろうけど・・・)
引数として何を与えるとか書いてある本も(自分は)見たことがないです。

現状は使用したオブジェクトの全破棄とクラス間でデータをやりとりするのに
使ったグローバル変数のリセットで実装していますが、早速試してみます。
ありがとうございました。
解決済み!
2006/02/01(Wed) 10:24:54 編集(投稿者)

■No14788に返信(あおぞらさんの記事)
> 自分としては、DataGridやデータを保持していたオブジェクトを全部Disposeして、
> Loadプロシージャを呼び出せればアプリケーションの再起動をしなくても再起動
> 同様の処理になると思うのですが・・・。

Loadプロシージャそのものを呼び出すのではなく、初期化部分をサブプロシージャ化しておき、Loadプロシージャでそれをコールし、一仕事終わった後にもそのサブプロシージャをコールするようにすればいいのではないですか?
本質はLoadプロシージャを2回呼び出したいということではなく、初期化を2回やりたいということですよね?
じゃんぬさんも書かれていますが、イベントプロシージャはイベントが起きた時に実行されるプロシージャです。自分で任意のタイミングで実行させたいプロシージャであれば、自分でそのプロシージャを定義しましょう。
解決済み!
2006/02/01(Wed) 18:44:48 編集(投稿者)

trapemiya様
お世話になります。

>>自分としては、DataGridやデータを保持していたオブジェクトを全部Disposeして、
>>Loadプロシージャを呼び出せればアプリケーションの再起動をしなくても再起動
>>同様の処理になると思うのですが・・・。
>
> Loadプロシージャそのものを呼び出すのではなく、初期化部分をサブプロシージャ化しておき、Loadプロシージャでそれをコールし、一仕事終わった後にもそのサブプロシージャをコールするようにすればいいのではないですか?
> 本質はLoadプロシージャを2回呼び出したいということではなく、初期化を2回やりたいということですよね?
> じゃんぬさんも書かれていますが、イベントプロシージャはイベントが起きた時に実行されるプロシージャです。自分で任意のタイミングで実行させたいプロシージャであれば、自分でそのプロシージャを定義しましょう。

なるほどLoadに処理を書くのではなくてLoadで処理を書いたプロシージャを実行
するのですね。
そうすればもっと柔軟に処理が出来るな・・・。
今回のプログラムは完成したので次のプログラムで早速活用します。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板