2009年10月29日


VB.net : フォームの「閉じるボタン」を無効にする

実装時の注意事項
Form1 のクラス内に直接記述してもいいですが、Partial で別ファイルに記述しています。
「閉じるボタン」を無効にしてしまうと、終了できなくなるので、「ESC」で終了できる
ように OnKeyDown イベントもオーバーライドしています。
ただ、デフォルトではウインドウのキーイベントが有効では無いので、OnLoad イベント
をオーバーライドして KeyPreview を True にしておきます

ESC キーを押した時に発生する Beep 音がメッセージボックスの Beep 音と重なって
うるさく感じる場合は、Form1 に KeyPress イベントを作成して、

If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Escape) Then
	e.Handled = True
End If

とすると1回になります
Partial Class Form1

	' ******************************************************
	' 閉じるボタンを無効にする
	' ******************************************************
	Protected Overrides Sub WndProc( _
	 ByRef message As System.Windows.Forms.Message)

		' WinUser.h
		' #define WM_SYSCOMMAND		0x0112
		' #define SC_CLOSE			0xF060

		If message.Msg = &H112 And message.WParam.ToInt32() = &HF060 Then
			Return
		End If

		MyBase.WndProc(message)

	End Sub

	' ******************************************************
	' KeyPress での処理を有効にする為の割り込み
	' ******************************************************
	Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)

		MyBase.OnLoad(e)
		MyBase.KeyPreview = True

	End Sub

	' ******************************************************
	' ESC による終了処理
	' ******************************************************
	Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)

		MyBase.OnKeyDown(e)

		If e.KeyCode = Keys.Escape Then
			If MessageBox.Show( _
			 "終了しますか?", _
			 "ESC", _
			 MessageBoxButtons.YesNo, MessageBoxIcon.Question _
			 ) = Windows.Forms.DialogResult.Yes Then
				Application.Exit()
			End If

		End If

	End Sub

End Class



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

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

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

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

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


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

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

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

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

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