तथ्य है: कीबोर्ड कुंजियां है। कुछ कुंजी संख्याओं का प्रतिनिधित्व करते हैं और कुछ नहीं करते हैं।
समस्या (rephrased): कुंजी एक संख्या का प्रतिनिधित्व करते हुए एक संख्यात्मक मान उत्पन्न करें, यदि कुंजी किसी संख्या का प्रतिनिधित्व करती है।
समस्या को हल करने के लिए यह जानना आवश्यक है कि कौन सी चाबियाँ (सभी चाबियों के सेट से बाहर) संख्याओं का प्रतिनिधित्व करती है और सटीक संख्यात्मक मान प्रत्येक (संख्या) कुंजी का प्रतिनिधित्व करता है।
मेरे ज्ञान के लिए ढांचे से ऐसा मैपिंग प्राप्त करने का कोई आसान तरीका नहीं है।
नोट: तथ्य डी 0-डी 9 और न्यूपैड 0-नामपैड 9 कुंजी क्रम में अनुक्रमिक हैं और आकस्मिक रूप से आदेश दिया जा रहा है इन मूल्यों पर निर्भर है।
तो समाधान होगा:
- निर्धारित करें यदि किसी कुंजी एक संख्या का प्रतिनिधित्व।
- कुंजी का प्रतिनिधित्व करते हैं तो कुंजी की संख्यात्मक मान वापस करें।
private static readonly IDictionary<Keys, int> NumericKeys =
new Dictionary<Keys, int> {
{ Keys.D0, 0 },
{ Keys.D1, 1 },
{ Keys.D2, 2 },
{ Keys.D3, 3 },
{ Keys.D4, 4 },
{ Keys.D5, 5 },
{ Keys.D6, 6 },
{ Keys.D7, 7 },
{ Keys.D8, 8 },
{ Keys.D9, 9 },
{ Keys.NumPad0, 0 },
{ Keys.NumPad1, 1 },
{ Keys.NumPad2, 2 },
{ Keys.NumPad3, 3 },
{ Keys.NumPad4, 4 },
{ Keys.NumPad5, 5 },
{ Keys.NumPad6, 6 },
{ Keys.NumPad7, 7 },
{ Keys.NumPad8, 8 },
{ Keys.NumPad9, 9 }
};
private int? GetKeyNumericValue(KeyEventArgs e) {
if (NumericKeys.ContainsKey(e.KeyCode)) return NumericKeys[e.KeyCode];
else return null;
}
बेशक, नहीं आसान समाधान है, लेकिन एक है कि मॉडल समाधान बारीकी से।
क्यों संख्याओं के स्थान पर enums का उपयोग नहीं करते हैं ताकि यह अधिक पठनीय हो? "> = (int) Keys.D0" और "> = (int) Keys.Numpad0" आदि ... –
इस कोड में बहुत से जादू संख्याएं हैं। Keys.X गणनाओं का उपयोग करना बहुत स्पष्ट है। –
मैं उस चीज़ को बहुत सोच रहा था, लेकिन मुझे यही चाहिए। धन्यवाद! –