PDA

View Full Version : استفاده از یک کلید میانبر مشترک برای انجام کارهای مختلف



mtaboy
یک شنبه 03 مهر 1390, 12:38 عصر
سلام.
من تو برنامم یک پنجره دارم که از چندتا تب تشکیل شده. توی هر تب هم می تونم یک آیتم خاص ایجاد کنم.من می خوام یک کلید میانبر برای ایجاد آیتم بنویسم که وقتی کاربر اون رو استفاده کرد با توجه به تبی که فعال هست رویداد ایجاد آیتم اون تب اجرا بشه.چطور میشه این قضیه رو کنترل کرد؟

mrbm_2007
یک شنبه 19 بهمن 1393, 15:17 عصر
سلام

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


using System.Runtime.InteropServices;


namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();


// define hot keys
int id = 1;//id 1 for Alt + A
RegisterHotKey(this.Handle, id, 1/* : Alt */, (int)'A');
id = 2;// id 2 for Alt + B
RegisterHotKey(this.Handle, id, 1/* : Alt */, (int)'B');
}


[DllImport("user32.dll")]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);


protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312)
{
int id = m.WParam.ToInt32();
if (id == 1) //Alt + A
HotKey_AltA();
if (id == 2) //Alt + B
HotKey_AltB();
}
base.WndProc(ref m);
}


void HotKey_AltA()
{
MessageBox.Show(this, "Hot key: Alt + A");
if (tabControl1.SelectTab == tabPage1)
{
AddItem1();
}
else if (tabControl1.SelectTab == tabPage2)
{
AddItem2();
}
}
void HotKey_AltB()
{
MessageBox.Show(this, "Hot key: Alt + B");
}


}
}