トップ ページ > VisualBasic 2010(express) > VisualBasic 2010(express)での補足

VisualBasic 2010(express)での補足

コンボボックスのアイテムにプリンタ一覧を設定

For Each p As String In Printing.PrinterSettings.InstalledPrinters
	ComboBox1.Items.Add(p)
Next
見ての通りなので、コメントなし

コマンドラインで実行した際の引数取得

Dim CommandLine As String
CommandLine = Command()
MsgBox(CommandLine)
下図は【***.exe /arg1 /arg2】 と実行した場合の結果です。
splitなどで引数を個別に取出すなど、工夫すればOKです。

フォーム内のコントロール名の変数化

LabelName = CType(Me.Controls("ラベル名"), Label)
LabelName.text = "ラベルテキスト"

ButtonName = CType(Me.Controls("ボタン名"), Button)
ButtonName.Enabled = False
コントロール名に連番を付けて、Forなどの処理で回したい場合など、有効です。

日付選択

DATE1 = Me.DateTimePicker1.Value.ToString("yyyy/MM/dd")
sql = "SELECT * FROM TABLE WHERE DATE < TO_DATE('" + DATE1 & "','YYYY/MM/DD')"
Oracleで使用する場合、DateTimePickerで取得した値の直接使用では型があわないので、
文字列に変換する必要がありますので、そのメモ。

DataGridViewへのコンボボックス列の追加

'データセットの作成
'他からも使用できるようにクラス変数にし、スコープをsharedにしておく
Shared dsサンプル表 As DataSet = New DataSet()

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
	'データセット、テーブルの初期化
	dsサンプル表.Clear()
	dsサンプル表.Tables.Clear()
        
	'ワークテーブルとバインドデータの作成
	Dim workTableDGVサンプル表 As DataTable = dsサンプル表.Tables.Add("サンプル表")
	BindingSourceサンプル表.DataSource = dsサンプル表.Tables("サンプル表")
	Me.DataGridView1.DataSource = BindingSourceサンプル表

	'列を1つ作成(特に意味はなし)
	workTableDGVサンプル表.Columns.Add("列1", Type.GetType("System.Single"))

	'空行を4つ作成
	For i = 0 To 3
		workTableDGVサンプル表.Rows.Add()
	Next i

	'コンボボックス用の列を先頭列に追加(選択肢は[-,あり,なし]の三つ)
	Dim ComboCell As New DataGridViewComboBoxColumn
	Dim NameList() As String = New String() {"-", "あり", "なし"}
	ComboCell.DataSource = NameList
	DataGridView1.Columns.Insert(DataGridView1.Columns(0).Index, ComboCell)

	'コンボボックス用の列を先頭列に追加(選択肢は[-,あり,なし]の三つ)
	ComboCell.Name = "有/無"
	ComboCell.AutoComplete = True
	DataGridView1.Columns(0).ReadOnly = False
End Sub

DataGridViewの表示速度改善(ダブルバッファを有効にしてチラツキ防止)

'ダブルバッファを有効にしてチラツキ防止
Dim myType As System.Type = GetType(DataGridView)
Dim myPropertyInfo As System.Reflection.PropertyInfo = myType.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.NonPublic)
myPropertyInfo.SetValue(DataGridView名, True, Nothing)