- PR -

VB6のForms コレクションの.NET移行

1
投稿者投稿内容
BAN
会議室デビュー日: 2002/10/22
投稿数: 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/05/04
投稿数: 9
投稿日時: 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以外が渡されるような事があれば実行時エラーが発生しますので
注意して下さい。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-10-23 17:09
こんにちは。
引用:

BANさんの書き込み (2002-10-22 17:38) より:
 VB6のアプリケーションをVB.NETへの移行を行っていますが、
VB6ではFORM内でBASにある関数をFormコレクション(項目名)を
指定して呼び出しています。


 Formコレクションを呼び出して・・・ではなく、TextBoxなどを継承し、もとの型のイベントをオーバーライドするメソッドを実装し、新しいクラスとします。詳しくは「オブジェクト指向」について、勉強してください。
 こうすることで、いったん作成した部品が、他のプロジェクトでテストすることなしに使用可能になります。
1

スキルアップ/キャリアアップ(JOB@IT)