vb.net(アクセス)からvb.net + SQLServerへのアプリケーションの書き換えが始まったばかりです。異なるアクティビティのフォームコントロールから反復を統合する方法はありますか
私はフォームの自動更新と元に戻すことを可能にするために、PrevValue、Modified(Textboxと同様)、Dirty、DirtyEnabled、SQLColumnName、SQLTableNameといったカスタムコントロールを(フォーム+フォームコントロール) IsDirty、Initialising、およびIsreadyプロパティとundoメソッドを公開します。
For each Ctrl as Control in frm.Controls ' frm being a reference to the form
if typeOf Ctrl is MyTextBox
with DirectCast(Ctrl, MyTextBox)
' here comes the variable code depending what needs to be done
end with
elseif TypeOf Ctrl is MyComboBox
' etc.... for MyListBox, MyCheckBox etc....
私もカスタムの数はMyTextBoxをからではなく、いくつかの修正動作を継承するMyNumBoxとMyDateBoxを制御しています
は、私が別の場所で3回同じ繰り返しのコードを記述する必要があることに発生しそう(数式の評価、日付の操作、カレンダー...)どのように私はそれらの余分なテストを行うことを避けるのですか?
この反復の1つのバージョンは、修正されたコントロールがSQLParameterとして追加され、反復処理後にSQLProcessClass UpdateまたはInsertを呼び出したSQLProcessClassにありますが、SQLアクティビティが成功した後に再びコントロールを繰り返して、各コントロールの変更されたフラグ。それ以外の場所では、すべてのコントロールを以前の値にリセットするためにフォームの元に戻す必要があります。
私には2つのオプションがあるようです。 1.フォームコントロールを繰り返し実行する必要があるどこでも反復コードを繰り返します。私は新しいカスタムコントロールを作成する必要があるたびに好きではありません。いくつかの行を別のモジュール/クラスにX回追加する必要があります...非常に悪いプログラミング 2. 1つのフォーム反復プロシージャを作成して、その "集中化された"手続きの中の別のクラスに属していて、それは(1)より良いかもしれませんが、それほど好きではありません。
私はまだマスターしていないいくつかの.net機能を使用してより良い方法がありますか?
ありがとうございました。
'For Each ctrl As MyTextBox frm.Controls.OfType(Of MyTextBox)で... ...その型だけをループし、その型として' ctrl'をキャストします。あなたは複数のループを行う必要があります。 – Plutonix
@plutonix、yr answerのためのthksしかし、ロジックを変更しないで、同じコードを別のモジュールにコピー&ペーストして実装する必要があります –