掲示板
  .NET開発  > ステップアップ.NET  > DateTimePickerで指定のキーでドロップダウン形式の予定表を表示したい  
 
 
 投稿者 スレッド: DateTimePickerで指定のキーでドロップダウン形式の予定表を表示したい
kimchinabe はオフラインです。最後に活動した時刻: 2006/03/26 0:11:38 kimchinabe
参加日: 2005-1-30
投稿数: 28
 
DateTimePickerで指定のキーでドロップダウン形式の予定表を表示したい
投稿日時: 2006-3-19 午後 12:53
お世話になっております。金です。


早速ですが、DateTimePickerで「ALT+↓」の押下で、ドロップダウン形式の予定表を表示したいのですが、どうすればよいでしょうか。

MSDNも調べて見ましたが、解決方法が見当たらなかったので、
質問させていただきました。

ご存知の方、ぜひご教授お願いします。
red_fox63 はオフラインです。最後に活動した時刻: 2006/03/22 1:29:30 red_fox63
Top 50 Poster
参加日: 2003-7-17
投稿数: 170
 
Re: DateTimePickerで指定のキーでドロップダウン形式の予定表を表示したい
投稿日時: 2006-3-21 午後 3:35
WM_SYSKEYDOWNメッセージで VK_DOWNを送ってやればいいようですよ
kimchinabe はオフラインです。最後に活動した時刻: 2006/03/26 0:11:38 kimchinabe
参加日: 2005-1-30
投稿数: 28
 
Re: DateTimePickerで指定のキーでドロップダウン形式の予定表を表示したい
投稿日時: 2006-3-21 午後 8:01
red fox63 さん

ご解答ありがとうございました。

>WM_SYSKEYDOWNメッセージで VK_DOWNを送ってやればいいようですよ
初心者なので、ちょっとやり方が思いつかないですが、
もうすこし詳しくおしえていただけますでしょうか。


宜しくお願いいたします。
red_fox63 はオフラインです。最後に活動した時刻: 2006/03/22 1:29:30 red_fox63
Top 50 Poster
参加日: 2003-7-17
投稿数: 170
 
Re: DateTimePickerで指定のキーでドロップダウン形式の予定表を表示したい
投稿日時: 2006-3-22 午前 1:29
では 開発は何でやっていますか? VB C# C++ どれでしょう?

C++なら
HANDLE hWndDTP;
hWndDTP = GetDlgItem( hWnd, IDC_DTP1);
SendMessage( hWndDTP, WM_SYSKEYDOWN, VK_DOWN, 0 );
といった具合でしょう

VBなら
Declare Function SendMessage Lib "User32" ( ByVal hWnd as IntPtr, _
    ByVal nMsg as Integer, byVal wParam as Integer, byVal lParam as Integer) as integer
Const WM_SYSKEYDOWN = &H104
Const VK_DOWN = &h28
と宣言して

SendMessage( DTP1.Handle, WM_SYSKEYDOWN, VK_DOWN, 0 )
といった具合で実行

C#なら
[DllImport("User32.dll", EntryPoint:="SendMessageA"]
public static extern int SendMessage(IntPtr hWnd, int nMsg, int wParam, int lParam);
const WM_SYSKEYDOWN = 0x104;
const VK_DOWN = 0x28;
と宣言して

SendMessage( DTP1.Handle, WM_SYSKEYDOWN, VK_DOWN, 0 );
といった具合に実行
kimchinabe はオフラインです。最後に活動した時刻: 2006/03/26 0:11:38 kimchinabe
参加日: 2005-1-30
投稿数: 28
 
Re: DateTimePickerで指定のキーでドロップダウン形式の予定表を表示したい
投稿日時: 2006-3-25 午後 9:50
red fox63 さん

できました!!!
いろいろ教えていただきたいへん助かりました。
どうもありがとうございました。

最後のサンプルソースは以下の通りです。

----------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Drawing;


namespace sample2
{
public class CustomDateTimePicker : DateTimePicker
{
protected override bool ProcessKeyMessage(ref Message m)
{
// Keep all the keys for the DateTimePicker.
return ProcessKeyEventArgs(ref m);
}

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{

const int WM_KEYDOWN = 0x100;
const int WM_SYSTEMDOWN = 0x104;
  const int WM_SYSKEYDOWN = 0x104;
  const int VK_DOWN = 0x28;

  if (msg.Msg == WM_KEYDOWN || msg.Msg == WM_SYSTEMDOWN)
{

if (keyData == Keys.Down) {
SendMessage(this.Handle, WM_SYSKEYDOWN, VK_DOWN, 0);
}
}

return base.ProcessCmdKey(ref msg, keyData);

}

[System.Runtime.InteropServices.DllImport("User32.dll",EntryPoint="SendMessageA")]
public static extern int SendMessage(IntPtr hWnd, int nMsg, int wParam, int lParam);


private void FunctionKeyProcedure(Keys keyData)
{
//throw new Exception("The method or operation is not implemented.");
MessageBox.Show(keyData.ToString());

}

}
}

---------------------------------------------------



 
Page 1 of 1
 
GotDotNet Japan 掲示板  > .NET開発  > ステップアップ.NET  > DateTimePickerで指定のキーでドロップダウン形式の予定表を表示したい