SQLの窓

2010年05月27日


VB.net : フォーカス イベントの発生順序と注意事項

キーボードとマウスでは、GotFocus と LostFocus のイベント順序が全体で変わってしまうので使用できますが、使用しないようにします。( Visual Studio のイベント選択一覧には表示されません )

各ハンドラーの中からフォーカスを設定しないでください。フォーカスを設定すると、アプリケーションやオペレーティングシステムが応答を停止することがあります

Microsoft へのリンク

Control.Enter イベント (System.Windows.Forms)


キーボードで発生

キーボード (Tab、Shift + Tab など) を使用するか、Select メソッドまたはSelectNextControl メソッドを呼び出すか、ActiveControl プロパティを現在のフォームに設定してフォーカスを変更するとき、次の順序でフォーカスイベントが発生します。
1.Enter 2.GotFocus 3.Leave 4.Validating 5.Validated 6.LostFocus
マウスで発生 マウスを使用するか Focus メソッドを呼び出してフォーカスを変更するとき、フォーカス イベントは次の順序で発生します。
1.Enter 2.GotFocus 3.LostFocus 4.Leave 5.Validating 6.Validated
タグ:VB.NET
posted by lightbox at 2010-05-27 15:47 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2009年12月03日


VB.net クリップボードの処理 ( C# は注意 )

VB.net ではデフォルトで問題は出ませんが、
▼ C# では同じではエラーが出ます
ハンドルされていない例外: System.Threading.ThreadStateException: 
OLE が呼び出される前に、現在のスレッドが Single Thread Apartment
 (STA) モードに設定されていなければなりません。Main 関数に
 STAThreadAttribute が設定されていることを確認してく
ださい。
( System.Windows.Forms.Clipboard でも同じです )

Main に [System.STAThreadAttribute()] を指定します
Module MyModule

' ********************************************************
' * 実行
' ********************************************************
Sub Main()

	Dim pc As Microsoft.VisualBasic.Devices.Computer = _
		New Microsoft.VisualBasic.Devices.Computer

	pc.Clipboard.SetText("あいうえお")

	Console.WriteLine(pc.Clipboard.GetText())

End Sub

End Module

class MyModule 
{ 

	// ******************************************************** 
	// * 実行 
	// ******************************************************** 
	[System.STAThreadAttribute()]
	public static void Main() 
	{

		Microsoft.VisualBasic.Devices.Computer pc = 
			new Microsoft.VisualBasic.Devices.Computer();

		pc.Clipboard.SetText("あいうえお");

		System.Console.WriteLine(pc.Clipboard.GetText());

	} 

}
// ビルド例 : csc /r:%windir%\Microsoft.NET\Framework\v2.0.50727\Microsoft.VisualBasic.dll info.cs


関連する記事


タグ:VB.NET
posted by lightbox at 2009-12-03 13:59 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2009年10月22日


VB.net : 自分自身(というか元々プロテクトメソッド)を呼び出す遅延処理用プライベートタイマークラス

Convert VB.NET to C#

概要

Windows APIというか、C++ なら PostMessage するような処理ですが、VB.NET でざっと見当たらないのでてっとり早いタイマーを使いました。

最初フォームにコントロールを貼り付けて作ってテストすると、記述が分散してしまってまとまり悪いのでサブクラスを作成しました。

Start メソッドを呼び出すことは、Enabled を true に設定することと同じです。 同様に、Stop メソッドを呼び出すことは、Enabled を false に設定することと同じです。
Private tm As myTimer = New myTimer()
' **************************************************
' 遅延フォーカス用プライベートクラス
' **************************************************
Private Class myTimer
	Inherits System.Windows.Forms.Timer

	Private _col As Integer
	Private _row As Integer

	' ******************************************
	' タイマーによって呼び出される
	' ※ ここでフォーカス処理を実行
	' ******************************************
	Protected Overrides Sub OnTick(ByVal e As System.EventArgs)
		MyBase.OnTick(e)

		' タイマーを止める
		Me.Enabled = False
		' フォーカス処理
		Form1.LboxGrid1.CurrentCell = Form1.LboxGrid1(_col, _row)
	End Sub

	' ******************************************
	' ここを呼び出して、タイマーを起動させる
	' ※ しかしここではフォーカス処理は実行なし
	' ******************************************
	Public Sub setCellFocus(ByVal row As Integer, ByVal col As Integer)

		_col = col : _row = row
		Me.Interval = 50
		Me.Enabled = True

	End Sub
End Class

元々の記事

伝票入力に最適化した DataGridView


posted by lightbox at 2009-10-22 21:58 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり