dérivée que je dois faire une classe de base appliquer ceci:Empêcher les modifications à Form.FormBorderStyle en classe
public class DialogForm : Form
{
public DialogForm()
{
base.HelpButton = true;//enforce this
base.MinimizeBox = false;//enforce this
base.MaximizeBox = false;//enforce this
}
}
ET assurez-vous qu'il ne soit pas modifiée par la suite, comment cela peut-il être fait?
Je ne peux pas passer outre les propriétés MinimizeBox
et MaximizeBox
car ils ne sont pas virtuelles, si quelqu'un jette DialogForm
comme Form
contournera le code suivant:
new public bool MinimizeBox
{
get { return false; }
set { base.MinimizeBox = false; }
}
new public bool MaximizeBox
{
get { return false; }
set { base.MaximizeBox = false; }
}
Merci
Pour référence est ainsi ici pour le résoudre (merci à SLacks)
private bool m_inOnStyleChanged = false;
protected override void OnStyleChanged(EventArgs e)
{
if (!m_inOnStyleChanged)
{
m_inOnStyleChanged = true;
base.OnStyleChanged(e);
base.HelpButton = true;
base.MinimizeBox = false;
base.MaximizeBox = false;
m_inOnStyleChanged = false;
}
}
Vous pouvez également uniquement chaque propriété si elle est 'true' pour empêcher la récursivité. – SLaks
@SLaks: En effet, et il serait préférable d'utiliser un drapeau global aussi ... merci encore. – smichaud