15
juin
2007
Un bug dans le designer
juin
2007
Imaginons le contrôle suivant :
public class MyTB : TextBox
{
private string _test = "test";
public string Test
{
get { return _test; }
private set { _test = value; }
}
}
{
private string _test = "test";
public string Test
{
get { return _test; }
private set { _test = value; }
}
}
Dans la property grid du designer, impossible de modifier la proriété Test. Normal.
Maintenant surchargeons la propriété Text de TextBox avec un new :
public class MyTB : TextBox
{
private string _test = "Test";
public string Test
{
get { return _test; }
private set { _test = value; }
}
private string _text = "Text";
public new string Text
{
get { return _text; }
private set { _text = value; }
}
}
{
private string _test = "Test";
public string Test
{
get { return _test; }
private set { _test = value; }
}
private string _text = "Text";
public new string Text
{
get { return _text; }
private set { _text = value; }
}
}
Dans la property grid du designer, on peut renseigner la valeur de Text. Pourquoi pas après tout, on a le droit de faire :
((TextBox)myTB).Text = "blablabla";
Sauf que le designer ne fait pas le cast. Du coup, il génère une erreur de compilation. ![]()
En fait il zappe même complètement ma propriété Text. En effet, dans la property grid, Text est vide au lieu d’être à « Text ».

Un article de Matthieu MEZIL