質問

私は、フォルダの変更を追跡するための小さなアプリを書いているアマチュアです。グリッドビューにバインドされた1つのデータテーブルで監視するディレクトリに関する情報を保持することを想像します。ユーザーがボタンをクリックすると、プログラムはFileSystemWatchersを作成してディレクトリを監視し、イベントメッセージを別のデータテーブルに送信します別のグリッドビューにバインドされています。 OOPの広い世界のどこでDatatableを宣言、開始、および操作する必要がありますか?メイン内、クラス内のメインフォーム、または「ギブアップ」する必要があります。 Visual Studioを使用して自動的にDataSetを作成し、2つのテーブルを貼り付けますか?

役に立ちましたか?

解決

コース用の馬。小さなユーティリティアプリの場合は、VS" Visual / RAD"を使用した方が良いでしょう。プログラミングのスタイル。たとえば、ほとんどのチュートリアルが示すように、テーブルをフォームにドラッグアンドドロップします。

厳密に言えば、より大きなアプリの場合、データアクセスを処理する別のアセンブリ(.dll)を作成し、そのアセンブリ内のクラスをメインフォームから呼び出すのがより正しい方法です。この概念にはいくつかの用語がありますが、事実上、懸念を分離したいと考えています。言い換えると、UIがUIインタラクションを処理し、データベースの対話性を処理する別のアセンブリ/プロジェクト/もの、およびビジネスロジックなどを処理する別のアセンブリ/プロジェクト/ものを持っているようにします。

この最後の2、3の文章は、人によって異なることを意味する可能性があり、100%正しいことを行う方法はありません。

役立つ記事:

リンクテキスト
リンクテキスト < br> リンクテキスト

他のヒント

KiwiBastardに同意します。VSツールを使用して型指定されたDataSetを生成することで、かなりの利益が得られます。

ただし、クラスを生成するだけです。 DataSetのインスタンスを管理する必要があります。 UIとビジネスロジックを異なるクラスにファクタリングしていない非常にシンプルなアプリの場合、フォームでそれを行います。複雑なアプリの場合、それはビジネスロジッククラスの一部です。

おそらくあなたの多くのトラブルを救う何か:データバインディングは良好で、ADOは良好ですが、特定の種類のADOコード(特にDataTableのイベントハンドラー)はデータバインディングでうまく機能しません。 BindingSourcesを使用している場合(実際に使用する必要があります)、DataSetのオブジェクトをプログラムで操作するとき(行の追加や削除など)にバインドを一時停止することをお勧めします。バインドの中断と再開のコストは非常に小さく、診断が非常に困難なクラスの問題をすべて排除します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top