質問編集履歴

2 補足の追加

yougo0411

yougo0411 score 12

2016/03/30 01:32  投稿

コードビハインドで画面コントロールをオブジェクト変数化について
現在の現場で、WindowsフォームをVB.NETで実装しております。
同僚の新規画面の実装方法ですが、
画面のテキストボックスやチェックボックス等の全ての入力コントロールを、
イベント宣言されたインスタンス変数、またはコントロール配列の変数で保持しており、
各イベントはそのクラス変数に紐づいたイベントハンドラーをキックして処理します。
処理や条件によりイベントハンドラーを付け替え、解除は行っていません。
(複雑な制御の必要のない画面の為)
------------------------
(例:細かい部分が間違っていたらすいません)
Private WithEvents obj名前 as TextBox = txt名前
Private WithEvents obj年齢 as TextBox = txt年齢
Private obj年代 as CheckBox() = New CheckBox(10)
...
Public Sub New()
 Dim i As Integer
 For i = 0 To 9
   AddHandler obj年代(i).KeyPress, AddressOf test_CheckedChanged
 Next
End Sub
Public Sub test_CheckedChanged(ByVal Object sender, ByVal EventArgs e)
 ...
End Sub
Public Sub obj名前_LostFocus(ByVal Object sender, ByVal EventArgs e) Handles obj名前.LostFocus(
 ...
End Sub
------------------------
私の認識でコントロールをクラス変数で保持しておくのは以下のメリット(場合)だと考えていました。
・VB6時代にコントロール配列があって、同グループのチェックボックスをループ処理などで纏めて処理する為の管理
・同一イベントハンドラーを複数コントロールに紐づけて処理させる為にコントロールをオブジェクト化
・イベントハンドラーの動的な紐づけ
そこで質問させていただきたいのですが、
▼1.全ての入力コントロールをクラス宣言してイベント発生させるのに意味が見出せませんが、
少なくても共通イベントを持たない かつ チェックボックスやラジオボタン以外も積極的に
クラス変数化するのは、どのようなメリットがあるのでしょうか。
少なくても「共通イベントを持たない かつ チェックボックスやラジオボタン以外」も
積極的にクラス変数化するのは、どのようなメリットがあるのでしょうか。
(イベントの追加・解除が必要な画面でならばHandlesのよるイベントハンドラーは解決できない場合もあり!?)
▼2.C#でもコントロールのオブジェクト変数化は普通に行われている技術でしょうか。
▼3..Netの新画面にコントロール配列に違和感を感じるのは私だけでしょうか。
色々な現場、実装方法を知りたいので様々な意見頂戴できると幸いです。
  • VB

    438 questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

  • .NET Framework

    715 questions

    .NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

  • VB.NET

    1346 questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

1 例の追加

yougo0411

yougo0411 score 12

2016/03/30 00:52  投稿

コードビハインドで画面コントロールをオブジェクト変数化について
現在の現場で、WindowsフォームをVB.NETで実装しております。
同僚の新規画面の実装方法ですが、
画面のテキストボックスやチェックボックス等の全ての入力コントロールを、
イベント宣言されたクラス変数としてクラス変数で保持しており、
イベント宣言されたインスタンス変数、またはコントロール配列の変数で保持しており、
各イベントはそのクラス変数に紐づいたイベントハンドラーをキックして処理します。
処理や条件によりイベントハンドラーを付け替え、解除は行っていません。  
(複雑な制御の必要のない画面の為)  
 
------------------------  
(例:細かい部分が間違っていたらすいません)  
Private WithEvents obj名前 as TextBox = txt名前  
Private WithEvents obj年齢 as TextBox = txt年齢  
Private obj年代 as CheckBox() = New CheckBox(10)  
...  
 
Public Sub New()  
 Dim i As Integer  
 For i = 0 To 9  
   AddHandler obj年代(i).KeyPress, AddressOf test_CheckedChanged  
 Next  
End Sub  
 
Public Sub test_CheckedChanged(ByVal Object sender, ByVal EventArgs e)  
 ...  
End Sub  
 
Public Sub obj名前_LostFocus(ByVal Object sender, ByVal EventArgs e) Handles obj名前.LostFocus(  
 ...  
End Sub  
 
------------------------  
私の認識でコントロールをクラス変数で保持しておくのは以下のメリット(場合)だと考えていました。
・VB6時代にコントロール配列があって、同グループのチェックボックスをループ処理などで纏めて処理する為の管理
・同一イベントハンドラーを複数コントロールに紐づけて処理させる為にコントロールをオブジェクト化
・イベントハンドラーの動的な紐づけ  
そこで質問させていただきたいのですが、
▼1.全ての入力コントロールをクラス宣言してイベント発生させるのに意味が見出せませんが、
少なくても共通イベントを持たない かつ チェックボックスやラジオボタン以外も積極的に
クラス変数化するのは、どのようなメリットがあるのでしょうか。
▼2.C#でもコントロールのオブジェクト変数化は普通に行われている技術でしょうか。
▼3..Netの新画面にコントロール配列に違和感を感じるのは私だけでしょうか。
色々な現場、実装方法を知りたいので様々な意見頂戴できると幸いです。
  • VB

    438 questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

  • .NET Framework

    715 questions

    .NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

  • VB.NET

    1346 questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る