• ベストアンサー

長いソースをサブルーチンで分割

環境:VS.NET 2003 言語:VB.NET 1フォームにたくさんボタンを置いて、その機能を コーディングしていると、どうしてもそのフォーム、From1.vbの 行数が増えてしまって、見にくくなってくるのですが、 一部を別vbモジュール(?)に分割することは可能なのでしょうか? 別モジュールに書くと、Me.Button1等ができなくなりますが、 引き継ぐ方法ももしありましたらご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

フォームの一部を分割出来るなら,コントロール化するという方法もあります。 コントロールの外からコントロールの中へアクセスはできませんが, 上手いことプロパティやイベントを使って分割出来るなら, ユーザーコントロールは一つの解だと思いますよ。

ALEX1005
質問者

補足

ありがとうございました。 いまはちょっとハードルが高そうです。

その他の回答 (3)

noname#221368
noname#221368
回答No.4

 最初に意見を述べさせて下さい。  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)
回答No.2

2005以降であればPartialの出番ですが、2003ということで、うーん。 #Region~#End Regionで機能毎にブロックを分けるなどすれば、多少は見やすくなるかもしれません。

ALEX1005
質問者

お礼

ありがとうございました。

ALEX1005
質問者

補足

今は、Regionでしのごうと思います。 来年は、2008で、、 ありがとうございました。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

Class Form1 内なら SubモジュールやFunctionモジュールをいくつかいてもMe.Button1が使用できます。

ALEX1005
質問者

補足

すみません、それは新規作成して、別のClass.vbに 記述できることを意味するのでしょうか?

関連するQ&A