|
お世話になっております。
蛇足ですが、せっかくですのでControl.BeginInvokeを実行する際、引数を与えて実行するやり方を下記に記述します。 MethodInvokerは引数・戻り値なしの様ですので、他の方の参考になればと。
Delegateステートメントはもちろん、Functionでも実装可能です。(詳しくはヘルプ等をご確認ください。)
以下、ソースになります。
Imports System.Windows.Forms
Public Class FormTest1
Public Sub New() InitializeComponent() End Sub
Delegate Sub testDelegate(ByVal index As Integer)
Private Sub FormTest1_load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load setGridData() End Sub
Private Sub setGridData() With Me.DataGridView1 .Columns.Add("AAA", "AAA") .Columns.Add("BBB", "BBB") .Columns.Add("CCC", "CCC") .Columns.Add("DDD", "DDD")
Dim cnt As Integer = 0 'While cnt < 5 ' .Rows.Add() ' cnt += 1 'End While .Rows.Add(5)
For i As Integer = 0 To .Rows.Count - 1 .Item("AAA", i).Value = "AAA" & i .Item("BBB", i).Value = "BBB" & i .Item("CCC", i).Value = "CCC" & i Next End With End Sub
Private Sub DataGridView1_(ByVal sender As Object, ByVal e As MouseEventArgs) Handles DataGridView1.MouseDown 'DataGridView1.Rows(3).Selected = True 'For i As Integer = 0 To DataGridView1.Columns.Count - 1 ' DataGridView1.Rows(3).Cells(i).Selected = True 'Next
'MethodInvokeを使用した場合 'Me.BeginInvoke(New MethodInvoker(AddressOf SetStateSelectedOfRow))
'デリゲートを実装した場合 Dim del As testDelegate = AddressOf Me.SetStateSelectedOfRow Dim obj(0) As Object obj(0) = 3
Me.BeginInvoke(del, obj) End Sub
Private Sub SetStateSelectedOfRow() DataGridView1.Rows(3).Selected = True End Sub
Private Sub SetStateSelectedOfRow(ByVal index As Integer) If index < 0 Then Exit Sub End If
DataGridView1.Rows(index).Selected = True End Sub
End Class
|