- - PR -
VB6のForms コレクションの.NET移行
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2002-10-22 17:38
VB.NETで皆さんのお知恵を拝借したく、質問を致します。
VB6のアプリケーションをVB.NETへの移行を行っていますが、 VB6ではFORM内でBASにある関数をFormコレクション(項目名)を 指定して呼び出しています。 具体的には、GOTFOCUS、CHANGEイベント等の処理に使用し、入力欄を ブルー色に変更、MAXLIGTHを判断し全桁入力時には自動的にロストフォーカス させる処理等を共通関数として、全業務共通に使用する仕組みで構築しています。 VB.NETへ移行した場合、FORMコレクションを継承しないことになっている ためその仕組みが使用できず、イベントに処理内容を全て記述するようにしていますが、 全業務共通的に使用する方法はないのですか。 使用したい機能(VB6での作り込んだ機能): ・GOTFOCUSイベント時に入力欄の背景色をブルーに変更 ・CHANGEイベント時に全桁入力された場合の[TAB]を発行し次の項目へ カーソル移動 ・LOSTFOCUSイベント時に入力欄の背景色を元に戻す ・KEYPRESSイベント時に数字、英字の入力文字チェック など 宜しくお願いします。 | ||||
|
投稿日時: 2002-10-23 16:11
具体的にどのようなコーディングをなさっているのかわからないのですが、
'****' は 'System.Windows.Forms.Form' のメンバではありません。 や 'UPGRADE_ISSUE: **** は、汎用名前空間 Form 内にあるため、解決できませんでした。 といったエラーに該当するような処理を行っているという事で良いでしょうか? 本来、Formの継承や、継承コントロール、Formのプロパティなどで置き換えていくべき 処理だとは思うのですが、もし、objForm As System.Windows.Forms.Form のように 変数を宣言しているのであれば、これを objForm As Object と置き換える事により とりあえずエラーを回避する事はできます。 (Javaではこんな事は許されないので、なんで?とは思うのですが) もちろん、変数がObject型になってしまうので、この変数には何でも代入できてしまい もし、対象となるべきForm以外が渡されるような事があれば実行時エラーが発生しますので 注意して下さい。 | ||||
|
投稿日時: 2002-10-23 17:09
こんにちは。
Formコレクションを呼び出して・・・ではなく、TextBoxなどを継承し、もとの型のイベントをオーバーライドするメソッドを実装し、新しいクラスとします。詳しくは「オブジェクト指向」について、勉強してください。 こうすることで、いったん作成した部品が、他のプロジェクトでテストすることなしに使用可能になります。 |
1