詳細なログは取り忘れました・・・
XPにOracle11gR2をインストールし使っていると、ある日突然使えなくなった。
原因はOracleがログに書き込めない為。なので、途中で動かなくなる。
Windowsのイベントログを削除し、広げてさらに自動で消すようにする設定にして動作するようになった。
ASP.NET AjaxControlToolkit ModalPopupExtender 表示時にテキストボックス(TextBox)にフォーカス(focus)をあてる
通常、AjaxControlToolkitのModalPopupExtenderを利用して表示させると、フォーカスを自由にセットできない。
そして色々とググりまくったが日本語で丁寧に書かれているものが見つからなかったので、覚書。
vb側
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If IsPostBack = False Then cmdOpen.Attributes.Add("onclick", "fnSetFocus('" & txtSearch.ClientID & "');") End If End Sub
aspx側に適当に記載
<script type="text/javascript"> <!-- //ModalPopupExtenderで表示した際にフォーカスをセットする var clientid; function fnSetFocus(txtClientId) { clientid = txtClientId; setTimeout("fnFocus()", 100); } function fnFocus() { eval("document.getElementById('" + clientid + "').focus()"); } // --> </script>
あとは通常通り、ModalPopupExtenderの設定をし、動かせばOKです。
このサンプルでは、TargetControlIDを”cmdOpen”として記述しています。
http://www.aspdotnetcodes.com/ModalPopup_Postback.aspx
COMポートの一覧を詳細な名前付きで取得する方法(VB2010,VB.NET)
USBバーチャルCOMのバーコードリーダーのポートが接続する度に変わってしまうので、
プログラム側からポート番号を取得!
VB2010でのサンプルソース
cmbPortNameという名前でComboBoxを設置した状態として
Dim PortsTable As New Dictionary(Of String, String) Dim mcW32SerPort As New ManagementClass("Win32_SerialPort") For Each aSerialPort As ManagementObject In mcW32SerPort.GetInstances() PortsTable.Add(DirectCast(aSerialPort.GetPropertyValue("Caption"), String), DirectCast(aSerialPort.GetPropertyValue("DeviceID"), String)) Next cmbPortName.Items.Clear() For Each aPortCaption As String In PortsTable.Keys cmbPortName.Items.Add(aPortCaption) Next
で一覧を取得できます。
参考URL:シリアルポートの名前取得
http://axion.sakura.ne.jp/blog/index.php?UID=1278233577
WPFで右上のバツボタン(閉じるボタン)を表示しないようにする(VB2010,VB.NET)
WPFでタイトルバーのところは表示したいんだケド、右上のバツボタンは表示したくないという時
これで右上に出ているものが全て消え去ります。
VB2010にてのサンプルソース
Imports System.Runtime.InteropServices Imports System.Windows.Interop Class MainWindow <DllImport("user32.dll")> _ Private Shared Function GetWindowLong(hWnd As IntPtr, nIndex As Integer) As Integer End Function <DllImport("user32.dll")> _ Private Shared Function SetWindowLong(hWnd As IntPtr, nIndex As Integer, dwNewLong As Integer) As Integer End Function Const GWL_STYLE As Integer = -16 Const WS_SYSMENU As Integer = &H80000 Protected Overrides Sub OnSourceInitialized(e As EventArgs) MyBase.OnSourceInitialized(e) Dim handle As IntPtr = (New WindowInteropHelper(Me)).Handle Dim style = GetWindowLong(handle, GWL_STYLE) style = style And (Not WS_SYSMENU) SetWindowLong(handle, GWL_STYLE, style) End Sub End Class
WPFアニメーションのフレーム数を変更する
‘WPFアニメーションはデフォルトでは60フレーム/秒で動くらしいです。
が、スペックが低いPCでは厳しい場合もあるので、たとえば30フレーム/秒にする時はVB.NETでは、
System.Windows.Media.Animation.Timeline.DesiredFrameRateProperty.OverrideMetadata(GetType(System.Windows.Media.Animation.Timeline), New FrameworkPropertyMetadata(30))
と書くだけで変更する事ができる。
WPFで画像の描画を高速化(cached composition)
Imageがコントロールに割りついているとして、VB2010でのサンプル
Dim bitmapCache = New BitmapCache() bitmapCache.RenderAtScale = 1 Image.CacheMode = bitmapCache
とする事で、GPUのメモリにキャッシュされ、読み込みが早くなる。
VB.NETでの強制的なガベージコレクション(メモリ解放)
‘強制的にガベージコレクションを実行する
System.GC.Collect() System.GC.WaitForPendingFinalizers() System.GC.Collect()
半角スペースが続くヤツを半角スペース一つにする正規表現
半角スペースが続くヤツを半角スペース一つにする正規表現はこんな感じ
/(\s)\1{1,}/
VB2010での使い方のサンプルとしては、
Dim sql As String = "select * from Table" Dim r As New System.Text.RegularExpressions.Regex("(\s)\1{1,}") sql = r.Replace(sql, " ")
こんな感じで”select * from Table”にできます。
半角スペースを意図的に利用している時はこれじゃ使えないケドね・・・
ORACLE SELECT文やUPDATE文で、テーブルの値をマスクする
会員のデータを渡す時など、名前や住所などをマスクして渡さないといけない時がある。
そんな時はこんな感じのSQLで
SELECT REGEXP_REPLACE(TARGET,’(.).’,'\1●’) FROM TABLE
UPDATE TABLE SET TARGET = REGEXP_REPLACE(TARGET,’(.).’,'\1●’)