|
分類:[VB.NET/VB2005 以降]
高DPIでAccessに接続した際にフォームサイズやボタン大きさが変わってしまう
VB.NETとAccess2007を用いた環境で開発しております。
高DPI(文字サイズが150%)の環境でAccessに接続した際に
フォームサイズが小さくなったり、ボタンの文字サイズが小さくなってしまいます。
起動時はデザイナで見たままなのですが、コネクトした時点でこの現象が発生します。
何故コネクトすると自動スケーリング?が発生するのかが分からず困っており、
投稿させていただきました。サイズが変わらない様にする解決策はあるのでしょうか?
どなたかご教授お願い致します。
※フォームのAutoScaleModeはDPIです。
長くて申し訳ありませんが、以下ソースコードです。
Imports System.Data.OleDb
Public Class Form1
''' <summary>SQLコネクション</summary>
Private _con As OleDbConnection = Nothing
'データベースファイルパス
Private MasterDataBasePath As String = IO.Path.Combine(My.Application.Info.DirectoryPath, "XXXMaster.accdb")
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Connect2007(MasterDataBasePath, "XXXX")
MsgBox("接続完了")
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Disconnect()
MsgBox("切断完了")
End Sub
''' <summary>
''' DB接続
''' </summary>
''' <param name="dsn">データソース名</param>
''' <param name="pw">パスワード</param>
''' <param name="tot">タイムアウト値</param>
''' <remarks></remarks>
Private Sub Connect2007(ByVal dsn As String,
Optional ByVal pw As String = "",
Optional ByVal tot As Integer = -1)
'インスタンス生成
If _con Is Nothing Then
_con = New OleDbConnection
End If
'オープン済
If _con.State = ConnectionState.Open Then
Exit Sub
End If
'コネクトストリング 2007
Dim cs As String = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & dsn & ";" _
& "Persist Security Info=False"
'パスワード
If pw.Trim <> "" Then
cs &= ";Jet OLEDB:Database Password='" & pw & "'"
End If
'タイムアウト値
If -1 < tot Then
cs &= ";Connect Timeout=" & tot.ToString
End If
'コネクトストリング設定
_con.ConnectionString = cs
'DBオープン
_con.Open() '←ここでフォームのサイズが突然かわってしまいます
End Sub
''' <summary>
''' DB切断
''' </summary>
Private Sub Disconnect()
If _con Is Nothing Then Exit Sub
_con.Close()
_con.Dispose()
End Sub
End Class
|