কন্ট্রোল, শিফট, আল্ট বাটন ডাউন আছে কিনা তা অ্যাক্সেস করার দরকার হলে এমন কিছু গ্লোবাল কনস্ট্রাকশন রয়েছে যা আমি ব্যবহার করতে পারি? উদাহরণস্বরূপ একটি এর ভিতরে MouseDown
ঘটনা TreeView
।
যদি তাই হয়, কিভাবে?
কন্ট্রোল, শিফট, আল্ট বাটন ডাউন আছে কিনা তা অ্যাক্সেস করার দরকার হলে এমন কিছু গ্লোবাল কনস্ট্রাকশন রয়েছে যা আমি ব্যবহার করতে পারি? উদাহরণস্বরূপ একটি এর ভিতরে MouseDown
ঘটনা TreeView
।
যদি তাই হয়, কিভাবে?
উত্তর:
ক্লাস ব্যবহার করুন Keyboard
। Keyboard.IsKeyDown
আপনি ব্যবহার করে নিয়ন্ত্রণ, শিফট, আল্ট এখন ডাউন আছে কিনা তা পরীক্ষা করতে পারেন check
শিফটের জন্য:
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
{ /* Your code */ }
নিয়ন্ত্রণের জন্য:
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{ /* Your code */ }
আল্টের জন্য:
if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
{ /* Your code */ }
এছাড়াও আছে:
// Have to get this value before opening a dialog, or user will have released the control key
if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
}
Keyboard.Modifiers == ModifierKeys.Shift
বিবৃতিটি ব্যবহার করুন । আপনি যদি শিফট কীটি ধরতে চান তবে একই সাথে অন্যান্য (Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift
সংশোধকগুলি টিপলে যদি যত্ন না পান তবে হ্যাশফ্ল্যাগ সিনট্যাক্সটি ব্যবহার করুন বা আরও ভালKeyboard.Modifiers.HasFlag(ModifierKeys.Shift)
WIN+RightArrow
।
Keyboard.Modifiers
হিসাবে দেখায়None
private bool IsShiftKey { get; set; }
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
IsShiftKey = Keyboard.Modifiers == ModifierKeys.Shift ? true : false;
if ((Key.Oem3 == e.Key || ((IsShiftKey && Key.Oem4 == e.Key) || (IsShiftKey && Key.Oem6 == e.Key) || (IsShiftKey && Key.Oem5 == e.Key)) && (validatorDefn as FormatValidatorDefinition).format == "packedascii"))
{
e.Handled = true;
}
}
এইভাবেই আমি এটি পরিচালনা করি (প্রিভিউকিডাউন ব্যবহার করে), ধরা যাক আমরা Alt + R সন্ধান করছি ...
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if ((Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)
&& e.SystemKey == Key.R)
{
//do whatever
}
}
হয়ত কেউ পরিষ্কার করতে পারে কেন আমাকে ই.সিস্টেমকি ব্যবহার করতে হয়েছিল এবং কেবল ই.কি না, সম্ভবত সংশোধকটির কারণে? পরিবর্তক + কী অনুসন্ধান করার সময় এটি আমার পক্ষে নির্দোষভাবে কাজ করেছে।
আংশিকভাবে @ জোশের কাছ থেকে andণ নেওয়া, এবং কিছুটা ক্রুশিকের মতোই, এবং কী- এন্ট্রস.সিস্টেমকি এবং কীআভেন্টআরগস.কির মধ্যে পার্থক্য সম্পর্কে একটি প্রশ্ন উল্লেখ করা (কেন জোশকে সিস্টেমকে ব্যবহার করতে হবে তা উত্তর দেওয়া); পরিবর্তিত কী (যেমন অল্ট) সহ ই-কে কী.সিস্টেমটি দেয় এবং এভাবে 'আসল' কীটি ই.সিস্টেমকি-র মধ্যে রয়েছে।
এর চারপাশের উপায় হ'ল প্রথমে 'আসল' কীটি আনা, এবং তারপরে আপনার শর্তসাপেক্ষ:
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
// Fetch the real key.
var key = e.Key == Key.System ? e.SystemKey : e.Key;
if ((Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
&& key == Key.Return)
{
// Execute your code.
}
}
(e.Key == Key.F && e.KeyboardDevice.Modifiers == ModifierKeys.Control)
অন্য সমস্ত জিনিসগুলির পরিবর্তে কেবল পরীক্ষা করতে পারেন ...