Domanda

In genere le lettere di scelta rapida su un MenuStrip sono sottolineate. (& amp; File, & amp; Open, ecc.) Su un progetto che sto lavorando alla sottolineatura compare nel designer, ma non in fase di esecuzione. Non riesco a trovare la proprietà che controlla questo. Qualcuno là fuori lo sa?

È stato utile?

Soluzione

In Windows, esiste un'impostazione per mostrare o meno la sottolineatura. Per modificare l'impostazione,

  1. Fai clic destro sul desktop
  2. Seleziona " Proprietà "
  3. Fai clic su " Aspetto " scheda
  4. Fai clic su " Effetti " pulsante
  5. Deseleziona la casella etichettata " Nascondi lettere sottolineate per la navigazione da tastiera "

Altri suggerimenti

Puoi forzare l'utente a vedere la sottolineatura creando un renderer ToolStrip personalizzato. Mi ci è voluto un po 'di tempo per capire come aggirare la risposta di Chris. Ecco il renderer che ho creato:

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);
        }
    }
}

E poi nel modulo con MenuStrip, nel costruttore si imposta il renderer:

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

Vorrei sottolineare che se si preferisce un aspetto in stile System del rendering, è possibile estendere la classe ToolStripSystemRenderer invece di Professional, ma mi piace essere in grado di personalizzare la tabella dei colori. Questa è la correzione che non richiede al client di modificare le impostazioni del suo computer. Buon divertimento!

Verranno visualizzati in fase di esecuzione solo quando l'utente preme il tasto alt. Quando premi il tasto Alt, il modulo pensa che potresti voler utilizzare una delle scorciatoie in modo da visualizzare qualsiasi sottolineatura.

Per la domanda di follow-up relativa a questo, vale a dire, far funzionare tutto questo per tutti i tasti di scelta rapida delle applicazioni:

[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); 
}

Chiama GetAltKeyFixed prima di Application.Run o equiv.

Ne avevo bisogno per la conformità 508 e quasi tutte le risposte su questo argomento sono di modificare le impostazioni del desktop O una concisione "perché dovresti farlo?" risposta. Questo non è il requisito più folle di cui abbia sentito parlare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top