J'ai un contrôle qui hérite d'un autre contrôle (TxTextControl). J'ai une propriété SelectedText qui bascule la propriété SelectedText de base, ce qui est apparemment nécessaire car mon contrôle implémente une interface avec cette propriété. Le code est le suivant:Erreur de conception dans le formulaire pour l'objet avec
public string SelectedText
{
get
{
return base.Selection.Text; // Error here (#1042)
}
set
{
if (base.Selection == null)
{
base.Selection = new TXTextControl.Selection(0, 0);
}
base.Selection.Text = value;
}
}
Lorsque je lâche ce contrôle sur un formulaire, aucun problème. Il compile et s'exécute. Tout a l'air génial. Cependant, quand j'enregistrez, fermez puis rouvrez le formulaire, le concepteur de formulaire montre cette erreur:
Object reference not set to an instance of an object.
1. Hide Call Stackat Test.FormattedTextBox2.get_SelectedText() in C:\Projects\Test\FormattedTextBox2.cs:line 1042
Quelqu'un sait ce qui se passe? Je suis sur le point de sortir mes derniers cheveux ...
MISE À JOUR:
La réponse de darkassisin93 n'était pas tout à fait correcte, mais c'était parce que mon code posté n'était pas exactement précis. J'avais besoin de tester si base.Selection était null avant d'essayer d'accéder à une propriété de cet objet. En tout cas, cette réponse m'a conduit dans la bonne direction. Voici la solution réelle:
public string SelectedText
{
get
{
string selected = string.Empty;
if (base.Selection != null)
{
selected = base.Selection.Text;
}
return selected;
}
set
{
if (base.Selection == null)
{
base.Selection = new TXTextControl.Selection(0, 0);
// Have to check here again..this apparently still
// results in a null in some cases.
if (base.Selection == null) return;
}
base.Selection.Text = value;
}
}
pouvez-vous poster le contenu de FormattedTextBox2.cs, en particulier la ligne 1042? –
La question a été mise à jour pour indiquer que l'erreur était liée au code affiché et que la ligne s'est produite. –