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 ».