--.--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2009.12.31

第358夜

vbのお勉強3日目・・・。

vbsの文法等の基本は軽くだけど確認したので、vbの方に戻ってみよう。
vbsも色々とサンプルを見たり、自分で書いて試してみる必要はあるのだけどね。
この記事へのトラックバックURL
http://hexagram.blog41.fc2.com/tb.php/381-1c51a825
この記事へのトラックバック
この記事へのコメント
Q.フォーム上の指定のコントロールを取得したい場合

A.Me.ControlsとGetTypeを利用する。

例)
Dim o As Control

For Each o In Me.Controls
If o.GetType Is GetType(TextBox) Then
o.Enabled = False
End If
Next

※Me.Controlsはコントロールの中にパネルなどのコンテナがある場合、その中にあるコントロールにはアクセスできない。
Posted by hexagram at 2009.12.31 19:18 | 編集
Q.特定のまとまり(コンテナ?)からコントロールを取得したい場合

A.下記のような方法もある。

1.Me.ControlsのMeの部分を取得したいコントロールにする。

2.コンテナでグループ化する。
1の派生で一括処理をするようなコントロールをパネルなどのコンテナ上に配置して、パネルのControlsを利用する。

3.名前でグループ化する。
1の派生で一括処理をするようなコントロールの名前にルールを付けてグループ化する。

例)
Dim oControl As Control

For Each oControl In Me.Controls
If Strings.Left(oControl.Name, 3) = "txt" Then
oControl.BackColor = Color.LightCoral
End If
Next

4.種類でグループ化する。

例)
Dim oControl As Control

For Each oControl In Me.Controls
If oControl.GetType Is GetType(Button) Then
oControl.Enabled = False
End If
Next

5.Tagプロパティでグループ化する。

例)
Dim oControl As Control

For Each oControl In Me.Controls
If oControl.Tag = "Admin" Then
oControl.Enabled = False
End If
Next

6.自分でグループを定義する。

例)
Dim MyControls As New ArrayList

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MyControls.Add(TextBox2)
MyControls.Add(TextBox3)
MyControls.Add(Button1)
End Sub

Dim oControl As Control

For Each oControl In MyControls
oControl.Enabled = False
Next

7.自作のコレクションを作成する(フォーム上の全てのコントロール(コンテナ内部のコントロールも含めて名前でアクセス可能))。

例)
Public Shared Function CreateControlCollection(ByVal Container As Control) As Hashtable
Dim Hash As New Hashtable
Call AppendControlCollection(Container, Hash)
Return Hash
End Function

Private Shared Sub AppendControlCollection(ByVal Container As Control, ByVal Hash As Hashtable)
For Each oControl As Control In Container.Controls
If oControl.Controls.Count > 0 Then
Call AppendControlCollection(oControl, Hash)
End If

Hash(oControl.Name) = oControl
Next
End Sub

呼出方法1
Dim MyControls As Hashtable = CreateControlCollection(Me)
Dim oControl As Control

For Each oControl In MyControls.Values
oControl.Text = "Hello!"
Next

呼出方法2
Dim MyControls As Hashtable = CreateControlCollection(Me)
Dim i As Integer

For i = 1 To 12
MyControls("TextBox" & i).text = "Hello!"
Next
Posted by hexagram at 2009.12.31 19:20 | 編集
Q.KeyPressのタイミングは?

A.文字のキーが押された場合に起きる。
文字のキーではない"F1", "SHIFT", "DELETE"などは起きない。
但し"ESC", "スペース", "ENTER", "BackSpace"が押された場合は起きる。
Posted by hexagram at 2009.12.31 23:06 | 編集
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。