Proprietà RightToLeft in Form in C #
-
03-07-2019 - |
Domanda
Voglio spostare il titolo del modulo, l'icona e chiudere e aiutare i pulsanti da sinistra a destra (cambiare il layout).
Ho spostato manualmente i controlli del modulo per mantenere l'immagine di sfondo, ma ora voglio cambiare il titolo del modulo.
Quando imposto la proprietà rightToLeft su yes e rightToLeftLayout su true nelle proprietà del modulo, l'immagine di sfondo scompare, ma utilizza la proprietà " BackColor "
Il mio codice è il seguente:
if (_lang == 'Arabic')
{
this.RightToLeft = RightToLeft.Yes;
this.RightToLeftLayout = true;
}
Ma mantiene l'immagine dei pulsanti.
Allora perché?
Soluzione
Per ulteriore risposta di Blounty, le specifiche MSDN affermano chiaramente che BackgroundImage, Opacity e altri non sono supportati quando si utilizza RightToLeftLayout:
http: / /msdn.microsoft.com/en-us/library/system.windows.forms.form.righttoleftlayout(vs.80).aspx :
L'estrazione del proprietario non è supportata quando RightToLeftLayout è impostato su Sì. Gli eventi di disegno del proprietario continueranno a verificarsi, ma il comportamento di qualsiasi codice creato in questi eventi non è definito. Inoltre, BackgroundImage, Opacity, TransparencyKey e gli eventi di pittura non sono supportati.
Altri suggerimenti
BackgroundImage, Opacity, TransparencyKey e gli eventi di pittura non sono supportati quando RightToLeftLayout è impostato su yes.
È abbastanza facile sostituire la funzionalità persa:
protected override void OnPaintBackground(PaintEventArgs e) {
Rectangle rc = new Rectangle(Point.Empty, this.ClientSize);
e.Graphics.DrawImage(Properties.Resources.SampleImage, rc);
}
Dovrai fare un po 'più di lavoro se devi affiancare l'immagine.