[個人メモ] [仕事メモ] [アイデア] [Ruby]
[TIPS] [対応表] [コメント書き方] [.NET Tips] [VB中学校] [VB.NET の入門サイト] [VB.NET コーディング標準 ] [VBレスキュー] [NonSoft]
2015-04-08
■ backGroundWorker
http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/437bgwcancel/bgwcancel.html
Imports System.ComponentModel Public Class Form1 ' [スタート]ボタンのイベント・ハンドラ Private Sub buttonStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonStart.Click buttonStart.Enabled = False buttonCancel.Enabled = True ' 時間のかかる処理を別スレッドで開始 bgWorker.RunWorkerAsync(100) ' DoWorkイベント発生 End Sub ' [キャンセル]ボタンのイベント・ハンドラ Private Sub buttonCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonCancel.Click ' 時間のかかる処理のキャンセル bgWorker.CancelAsync() End Sub ' 時間のかかる処理を行うメソッド Private Sub bgWorker_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgWorker.DoWork ' 別スレッドで実行されるため、このメソッドでは ' UI(コントロール)を操作してはいけない ' このメソッドへのパラメータ Dim bgWorkerArg As Integer = CType(e.Argument, Integer) ' senderの値はbgWorkerの値と同じ Dim worker As BackgroundWorker = CType(sender, BackgroundWorker) ' 時間のかかる処理 For i As Integer = 1 To bgWorkerArg ' キャンセルされてないか定期的にチェック If worker.CancellationPending Then e.Cancel = True Return End If System.Threading.Thread.Sleep(100) Dim percentage As Integer = i * 100 / bgWorkerArg ' 進ちょく率 worker.ReportProgress(percentage) ' ProgressChangedイベント発生 Next ' このメソッドからの戻り値 e.Result = "すべて完了" ' この後、RunWorkerCompletedイベントが発生 End Sub Private Sub bgWorker_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bgWorker.ProgressChanged ' 進ちょく状況の表示 Me.Text = e.ProgressPercentage & "%完了" progressBar.Value = e.ProgressPercentage End Sub Private Sub bgWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgWorker.RunWorkerCompleted If e.Cancelled Then MessageBox.Show("キャンセルされました") ' この場合にはe.Resultにはアクセスできない Else ' 処理結果の表示 Me.Text = e.Result.ToString() MessageBox.Show("正常に完了") End If buttonStart.Enabled = True buttonCancel.Enabled = False End Sub End Class
■ checedkListBox
Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.CheckedListBox1.Items.Add("List1", True) Me.CheckedListBox1.Items.Add("List2") Me.CheckedListBox1.Items.Add("List3") Me.CheckedListBox1.Items.Add("List4") Me.CheckedListBox1.Items.Add("List5") Me.CheckedListBox1.Items.Add("List6") End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click If Me.CheckedListBox1.GetItemChecked(0) = True Then MessageBox.Show("Item0 checked") Else MessageBox.Show("Item0 not checked") End If End Sub End Class
■ errorProvider
エラーを表示する
Public Class Form1 Private Sub TextBox1_Leave(sender As Object, e As System.EventArgs) Handles TextBox1.Leave 'チェックする項目 If IsNumeric(TextBox1.Text) Or _ TextBox1.Text = "" Then 'エラープロバイダーをクリア ErrorProvider1.SetError(TextBox1, Nothing) Else 'エラープロバイダーにセット ErrorProvider1.SetError(TextBox1, _ "数値で書くんだよ!") End If End Sub End Class
コメント
トラックバック - http://sub.g.hatena.ne.jp/garyo/20150408