2009-05-06 11 views
6

आमतौर पर मेनूस्ट्रिप पर हॉटकी अक्षरों को रेखांकित किया जाता है। (& फ़ाइल, & ओपन, आदि) एक प्रोजेक्ट पर मैं डिजाइनर में अंडरलाइन दिखाता हूं, लेकिन रन टाइम पर नहीं। मुझे उस संपत्ति को नहीं मिल रहा है जो इसे नियंत्रित करता है। वहाँ कोई भी जानता है?विनफॉर्म मेनूस्ट्रिप रेखांकित हॉटकी पत्र

+2

क्या आप Alt कुंजी दबाते समय दिखाते हैं? –

उत्तर

9

विंडोज़ में, एक सेटिंग है जो रेखांकित दिखाना है या नहीं। सेटिंग बदलने के लिए,

  1. राइट "प्रकटन" टैब पर डेस्कटॉप
  2. चुनें "गुण"
  3. क्लिक करें पर क्लिक करें
  4. "प्रभाव" बटन
  5. सही का निशान हटाएँ लेबल किए गए बॉक्स "पर क्लिक करें कुंजीपटल नेविगेशन के लिए रेखांकित अक्षरों को छुपाएं "
+0

अच्छा है। मुझे पता था कि सेटिंग कहीं थी, लेकिन याद रखें कि इसे कैसे प्राप्त किया जाए। – Crispy

+0

धन्यवाद, वह था। सवाल पूछने के लिए मूर्खतापूर्ण महसूस करें। :-) – Jeff

+2

मेरा मतलब है कि वास्तव में समस्या को हल करता है? जो आपके आवेदन या तो स्वयं यह सेटिंग बदलने की आवश्यकता होगी या आप सेटिंग अपने आप को बदलने के लिए में एक सेटअप आवेदन के लिए कुछ जोड़ने की आवश्यकता होगी हो जाता है कोई भी उपयोगकर्ता। – Mark

7

वे केवल रनटाइम पर दिखाई देंगे जब उपयोगकर्ता alt कुंजी दबाएगा। जब आप alt कुंजी दबाते हैं तो फॉर्म सोचता है कि आप शॉर्टकट में से किसी एक का उपयोग करना चाहेंगे ताकि यह किसी भी रेखांकन को प्रदर्शित कर सके।

13

आप उपयोगकर्ता को कस्टम टूलस्ट्रिप रेंडरर बनाकर अंडरलाइन देखने के लिए मजबूर कर सकते हैं। क्रिस के जवाब को बाईपास करने के बारे में पता लगाने में मुझे थोड़ी देर लग गई।

using System; 
using System.Drawing; 
using System.Windows.Forms; 

namespace YourNameSpace 
{ 
    class CustomMenuStripRenderer : ToolStripProfessionalRenderer 
    { 
     public CustomMenuStripRenderer() : base() { } 
     public CustomMenuStripRenderer(ProfessionalColorTable table) : base(table) { } 

     protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) 
     { 
      e.TextFormat &= ~TextFormatFlags.HidePrefix; 
      base.OnRenderItemText(e); 
     } 
    } 
} 

और फिर MenuStrip साथ फार्म में, निर्माता में आप दाता सेट:: यहाँ रेंडरर मैं बनाया है

public YourFormConstructor() 
{ 
    InitializeComponents(); 
    menuStripName.Renderer = new CustomMenuStripRenderer(); 
} 

मैं नोट करना चाहते हैं कि आप एक प्रणाली शैली पसंद करते हैं प्रस्तुत करने के लिए आप पेशेवर के बजाय ToolStripSystemRenderer क्लास का विस्तार कर सकते हैं, लेकिन मुझे रंग तालिका को कस्टमाइज़ करने में सक्षम होना पसंद है। यह वह फ़िक्स है जिसे क्लाइंट को अपनी कंप्यूटर सेटिंग्स बदलने की आवश्यकता नहीं होती है। का आनंद लें!

+0

इस मुद्दे का अच्छा समाधान। –

+0

धन्यवाद क्रिस, आपने वही प्रदान किया जो मैं खोज रहा था। –

+0

ऐसा कुछ काम करेगा लेकिन कमांड बटन पर लागू होगा (जिसमें एक गर्म कुंजी भी हो सकती है) ?? – Diego

0

अनुवर्ती प्रश्न इस से संबंधित के लिए, अर्थात्, यह हो रही है अपने सभी आवेदनों हॉटकी के लिए काम करने के लिए:

[DllImport ("user32.dll")] 
static extern void SystemParametersInfo(uint uiAction, uint uiParam, ref 
int pvParam, uint fWinIni); 

const uint SPI_SETKEYBOARDCUES = 0x100B; 

private static void GetAltKeyFixed() 
{ 
//Set pvParam to TRUE to always underline menu access keys, 
int pv = 1; 
/* Call to systemparametersinfo to set true of pv variable.*/ 
SystemParametersInfo(SPI_SETKEYBOARDCUES, 0, ref pv, 0); 
} 

कॉल Application.Run या समतुल्य करने से पहले GetAltKeyFixed।

मैं 508 अनुपालन के लिए इस की जरूरत है और लगभग इस विषय पर सभी उत्तर डेस्कटॉप सेटिंग में बदलाव करने हैं या एक संक्षिप्त "तुम क्यों ऐसा करना चाहते हैं?" प्रतिक्रिया। यह मैंने पागलपन की आवश्यकता नहीं है।

संबंधित मुद्दे