ユーザーコントロール内のユーザイベントの作成

  ユーザイベント用のデータクラスを作成



  
' ******************************************************
' イベントへのデータ用のカスタムクラス
' ******************************************************
Public Class EnterKeyEventArgs
	Inherits System.EventArgs

	Public EnterToTab As Boolean
	Public Shift As Boolean
	Public Alt As Boolean
	Public Control As Boolean

End Class
  



  イベントの宣言



Framework では sender という引数がありますが、特に必要無かったので。

  
' ******************************************************
' Enterキーが押されると発生するイベント
' ******************************************************
Public Event EnterKey(ByVal e As lightbox.EnterKeyEventArgs)
  



  イベントの呼び出し

  
' ******************************************************
' EnterKeyイベントの処理
' ******************************************************
Dim e As New lightbox.EnterKeyEventArgs()
e.EnterToTab = bEnterToTab
e.Shift = ((Control.ModifierKeys And Keys.Shift) = Keys.Shift)
e.Alt = ((Control.ModifierKeys And Keys.Alt) = Keys.Alt)
e.Control = ((Control.ModifierKeys And Keys.Control) = Keys.Control)
RaiseEvent EnterKey(e)
  

((Control.ModifierKeys And Keys.Shift) = Keys.Shift) は、
SHIFT キーが押されているかどうかを知る為の記述です

C# の記述方法は、このセクションの下にサンプルがありますが、以下で変換すると良いでしょう
http://www.developerfusion.com/tools/convert/vb-to-csharp/
( サンプルは、実際に変換して実行テストしたものです )


↓以下 VB.NET で完全実装したコードサンプル
http://winofsql.jp/VA003334/dnettool080125151003_080125151055.htm



  C# でのサンプル

  
// ****************************************************** 
// Enterキーが押されると発生するイベント 
// ****************************************************** 
public event EnterKeyEventHandler EnterKey;
public delegate void EnterKeyEventHandler(System.EventArgs e);


// ****************************************************** 
// Enter To Tab の実際の処理 
// ****************************************************** 
protected override bool ProcessDialogKey(Keys keyData)
{
	if ((keyData & Keys.KeyCode) == Keys.Enter)
	{
		// ****************************************************** 
		// EnterKeyイベントの処理 
		// ****************************************************** 
		System.EventArgs e = new System.EventArgs();
		if (EnterKey != null)
		{
			EnterKey(e);
		}

		return this.ProcessTabKey(keyData);
	}
	return base.ProcessDialogKey(keyData);
}

protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{
	if (e.KeyCode == Keys.Enter)
	{
		// ****************************************************** 
		// EnterKeyイベントの処理 
		// ****************************************************** 
		System.EventArgs e2 = new System.EventArgs();
		if (EnterKey != null)
		{
			EnterKey(e2);
		}

		return this.ProcessTabKey(e.KeyCode);
	}
	return base.ProcessDataGridViewKey(e);
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ