アプリ版:「スタンプのみでお礼する」機能のリリースについて

Formに貼り付けたActiveXコントロールへのアクセスを別Classに担当させる方法

プログラミング初心者です。
現在VB.NETでRS-232Cで接続するデバイスを制御するフォームアプリケーションを作成しています。
デバイス制御にはメーカからActiveXコントロールが配布されており、それをフォームに貼り付けて基本的な動作をさせるところまではできています。

ただ、現在全てのコードがForm1クラスに記述されており、今後ボリュームが増えていくとメンテがしづらくなりそうですので、まとまった各機能群を別のクラスとして作成したいのですが、フォームに貼り付けたActiveXコントロールを別のクラスから動かすためにはどうすれば良いのかわかりませんので教えていただけないでしょうか。

以外検討してだめだったものです。

Class Class2
Dim frm As Form1 = New Form1
frm.AxSample1
End Class

上記のようにForm1のインスタンスを作成するのも何かが違う気がしますし…。

Class Class2

Dim frm As Form

Public Sub New(ByVal senderfrm As Form)
frm = senderfrm
End Sub

frm.AxSample1

End Class

上記だとAxSample1がClass2に認識されるはずもないですし…。

Importsとか色々試してみたのですがうまく行かず…という状況です。

そもそも根本的に別クラスにさせようということがおかしい、などの回答でも結構です。

よろしくお願いいたします。

A 回答 (2件)

> Inherits AxSample1


> のように記述するのでしょうか?
これでOKですね。

> その場合、グループ分けした機能群の数だけActiveXコントロールの派生クラスを作成するような
> イメージでしょうか。
こちらも、その考え方でOKです。

機能ごとに派生クラスを用意するという事は、例えば以下のような事ですよね。

基底クラス:TextBox
派生クラスA:数値のみ入力可能なTextBox
派生クラスB:郵便番号のみ入力可能なTextBox

※ 補足として、継承について書かれているHPを記載しておきます。
http://homepage1.nifty.com/rucio/main/VBdotNet/A …
http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6to …
    • good
    • 0
この回答へのお礼

せっかくご回答いただいたのにお礼が遅くなってしまいました、すみません。
なかなかうまくいかずに試行錯誤していたら時間が過ぎてしまいました。

> Inherits AxSample1
のように記述すると、AxSample1がフォームに貼り付けた段階でクラスではないためエラーになってしまいました。
Inherits SampleLib
でもうまくいかず…。

結局インスタンス化するときに、NewをオーバーライドしてMe.AxSample1を引数として渡すことで処理ができました。

また何かありましたらご質問させていただくかもしれません。よろしくお願いします。

お礼日時:2013/09/11 17:33

メーカから提供されたActiveXコントロールを継承して、カスタムコントロール化して、


カスタムコントロール化した物を、実際のフォームで使用というのはダメなのですか?

この回答への補足

すみません、初心者のためやり方がよくわからないのですが、
Inherits AxSample1
のように記述するのでしょうか?
その場合、グループ分けした機能群の数だけActiveXコントロールの派生クラスを作成するようなイメージでしょうか。

補足日時:2013/08/28 22:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!