- ベストアンサー
長いソースをサブルーチンで分割
環境:VS.NET 2003 言語:VB.NET 1フォームにたくさんボタンを置いて、その機能を コーディングしていると、どうしてもそのフォーム、From1.vbの 行数が増えてしまって、見にくくなってくるのですが、 一部を別vbモジュール(?)に分割することは可能なのでしょうか? 別モジュールに書くと、Me.Button1等ができなくなりますが、 引き継ぐ方法ももしありましたらご教授ください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
フォームの一部を分割出来るなら,コントロール化するという方法もあります。 コントロールの外からコントロールの中へアクセスはできませんが, 上手いことプロパティやイベントを使って分割出来るなら, ユーザーコントロールは一つの解だと思いますよ。
その他の回答 (3)
最初に意見を述べさせて下さい。 Formの内容が多くなると鬱陶しいのはわかりますが、個人的にはコードの明快さを優先して我慢します。Controlが10個あれば、最低10個のEventプロシージャがある事を覚悟します。Event処理自体はSubroutine化して、別のClassかModuleに移す事はやりますが、Eventプロシージャ領域をFormから追い出す事は、ふつうしません。 次のコードを試してみて下さい。FormはForm1,自前のClassであるSub_Routine1,Sub_Routine2を用意します。Formには、TextBox1があります。Form1とSub_Routine1,Sub_Routine2のコードのTextBox1とText1を見比べて頂ければ、何が起こっているか、わかると思います。 Public Class Form1 Private Subroutine1 As Sub_Routine1 Private Subroutine2 As Sub_Routine2 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Subroutine1 = New Sub_Routine1 Subroutine2 = New Sub_Routine2 AddHandler TextBox1.TextChanged, AddressOf Subroutine1.Text1_Change '必要Control分追加する End Sub End Class Public Class Sub_Routine1 Public Sub Text1_Change(ByVal sender As System.Object, ByVal e As System.EventArgs) Stop End Sub End Class Public Class Sub_Routine2 Private WithEvents Target As TextBox = Form1.TextBox1 '本当は、Property化するか、Newに含めた方が安全 Private Sub Target_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Target.TextChanged Stop End Sub End Class
- NYOI
- ベストアンサー率58% (56/96)
2005以降であればPartialの出番ですが、2003ということで、うーん。 #Region~#End Regionで機能毎にブロックを分けるなどすれば、多少は見やすくなるかもしれません。
お礼
ありがとうございました。
補足
今は、Regionでしのごうと思います。 来年は、2008で、、 ありがとうございました。
- pbforce
- ベストアンサー率22% (379/1719)
Class Form1 内なら SubモジュールやFunctionモジュールをいくつかいてもMe.Button1が使用できます。
補足
すみません、それは新規作成して、別のClass.vbに 記述できることを意味するのでしょうか?
補足
ありがとうございました。 いまはちょっとハードルが高そうです。