2009-05-23 6 views

Répondre

0

Malheureusement, il ne semble pas y avoir de moyen documenté de le faire. La seule façon que je connais est d'utiliser la réflexion, comme ci-dessous, mais cette technique accède au fonctionnement interne de la RichTextBox. Cela fonctionne dans les versions actuelles de WPF mais il n'y a aucune garantie qu'il continuera à fonctionner à l'avenir, alors utilisez-le à vos risques et périls.

PropertyInfo textEditorPropertyInfo = typeof(RichTextBox).GetProperty("TextEditor", BindingFlags.NonPublic | BindingFlags.Instance); 

     if (textEditorPropertyInfo == null) 
      throw new NotSupportedException("SetOverwriteable not support on this platform"); 

     object textEditor = textEditorPropertyInfo.GetValue(this, null); 
     PropertyInfo overtypeModePropertyInfo = textEditor.GetType().GetProperty("_OvertypeMode", BindingFlags.NonPublic | BindingFlags.Instance); 

     if (overtypeModePropertyInfo == null) 
      throw new NotSupportedException("SetOverwriteable not support on this platform"); 

     overtypeModePropertyInfo.SetValue(textEditor, true, null); 

Ce qui précède doit se produire après le constructeur.