PDA

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



ali190
جمعه 04 فروردین 1391, 13:07 عصر
باسلام و عرض خسته نباشید
فرض کنید من یه فرم دارم با آبجکت های زیر:
3 تا تکست باکس
2 تا دکمه
3 کمبوباکس
و...
حالا میخوام بدون توجه به اینکه فوکوس بر روی چه کنرلی باشه ، وقتی دکمه Ctrl+S رو زدم عملیات خاصی (مثلاً ننمایش یه پیغام به کاربر) انجام بشه
ممنون میشم راهنماییم کنید
یاعلی

omid_csh
جمعه 04 فروردین 1391, 16:58 عصر
سلام

به اینجا مراجعه کنین http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C

asadegha
جمعه 04 فروردین 1391, 18:31 عصر
خودت اذیت نکن. خاصیت KeyPreview فرمت رو True کن. حالا هر دکمه ایی بزنی و Focus هرجایی باشه، توسط رویداد های key... فرم قابل تشخیصه.

میگی نه؟؟؟؟؟؟ امتحان کن.

lvlaziar
جمعه 04 فروردین 1391, 19:03 عصر
یه راه ساده ترم استفاده از رویداد keydown فرم!( خودم واسه اولین کیلاگری ک نوشتم همین کدو استفاده کردم!)
اینم از کدش!
using System;
using System.Windows.Forms;

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

private void Form1_Load(object sender, EventArgs e)
{
this.KeyDown += new KeyEventHandler(Form1_KeyDown);//tarif roydad
}

void Form1_KeyDown(object sender, KeyEventArgs e)//code nevisish
{
if (e.KeyCode == System.Windows.Forms.Keys.S & e.Control == true)//taein shortcut
{
MessageBox.Show("Shoma CTRL+S ra feshar dadeh eiid :-(");//amaliat
}
}
}
}

فک کنم توضیحاتیم ک نوشتم مشخصه! ولی اگه سوالی بود مطرح کنید! : :قلب:
واسه سلامتی یه عزیز اگه صلوات بفرستید ممنون میشم :لبخندساده:

NiMble_m
جمعه 04 فروردین 1391, 19:31 عصر
حرف شما درسته ولی باید حتما قبلش خاصیت keyPreview فرم رو true کنی تا برنامه درست کار کنه
این کار کنید دیگه هرجا که فوکوس باشید مهم نیست و پیغام نمایش داده میشه
یا علی

asadegha
شنبه 05 فروردین 1391, 11:48 صبح
یه راه ساده ترم استفاده از رویداد keydown فرم!( خودم واسه اولین کیلاگری ک نوشتم همین کدو استفاده کردم!)
اینم از کدش!
using System;
using System.Windows.Forms;

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

private void Form1_Load(object sender, EventArgs e)
{
this.KeyDown += new KeyEventHandler(Form1_KeyDown);//tarif roydad
}

void Form1_KeyDown(object sender, KeyEventArgs e)//code nevisish
{
if (e.KeyCode == System.Windows.Forms.Keys.S & e.Control == true)//taein shortcut
{
MessageBox.Show("Shoma CTRL+S ra feshar dadeh eiid :-(");//amaliat
}
}
}
}

فک کنم توضیحاتیم ک نوشتم مشخصه! ولی اگه سوالی بود مطرح کنید! : :قلب:
واسه سلامتی یه عزیز اگه صلوات بفرستید ممنون میشم :لبخندساده:


keypreviw باید true باشه.

this.KeyDown += new KeyEventHandler(Form1_KeyDown);//tarif roydad
این رو واسه کلاس کارت نوشتی دیگه؟؟؟:چشمک:

if (e.KeyCode == System.Windows.Forms.Keys.S & e.Control == true)//taein shortcut
==true نمی نوشتی هم جواب میداد.