La verdad, no sé el nombre del programa, porque lo vi "de pasada" cuando estaba siendo usado por otra persona. Pero, respondiendo a la pregunta de Yván, les cuento un poco de qué va la cosa.
Se trata de un sistema de escritura de textos a través de un dispositivo. No se envía todo el texto junto, sino en partes, muchas veces palabra por palabra. Aunque en realidad no se mandan las palabras, sino que el dispositivo envía una codificación a la computadora, la cual es decodificada y pasada a texto. Ese texto debe ser escrito en un RichTextBox (o podría ser un componente de Word incrustado en el sistema), porque luego se debe editar (tipo de letra, alineación y otros atributos que suelen manejarse en la edición de textos).
Hay una tabla de definiciones con los campos "codigo" y "palabra" (ambos con formato Text) donde se cargan todas las palabras del diccionario que se pueda (a veces pueden ser más de una palabra) y se les asigna un código, de acuerdo a un sistema de codificación determinado. Entonces, existen muchos registros (por todas las palabras que se hayan cargado previamente alguna vez). Por ejemplo, pueden encontrarse los siguientes registros:
codigo palabra
kd4i9 3934f d1 tallarines
dkfj3 comer
dk3339j voy a (más de una palabra)
Supongamos que el texto que va a enviar la máquina es el siguiente: "voy a comer tallarines" (aclaro que el texto no está preestablecido, sino que va surgiendo sobre la marcha). Entonces, enviaría, uno por uno, los siguientes códigos: "dk3339j" "dkfj3" "kd4i9 3934f d1"
El sistema recibiría en primer lugar "dk3339j", buscaría en la tabla de definiciones, donde encontraría "voy a", lo cual escribiría en el RTB. Y el código lo iría guardando en un List. Luego recibiría "dkfj3" y lo procesaría de igual modo. Y así, con el resto.
Luego, cuando se termina el ingreso de datos, se edita el texto y se guarda en format RTF o Word.
Entonces en el RTB quedaría el siguiente texto: "voy a comer tallarines". Y en el List quedaría lo siguiente:
dk3339j
dkfj3
kd4i9 3934f d1
Para seguir con el ejemplo anterior, al terminar el ingreso de datos y editar el texto, podría agregar (desde el teclado de la computadora) la palabra "muchos" entre "comer" y "tallarines" para dejar la frase así: "voy a comer muchos tallarines".
Entonces ahí el texto del RTF sería: "voy a comer muchos tallarines", pero el List quedaría igual, ya que no se ha enviado ningún código desde el dispositivo para la palabra "muchos".
Esto funciona perfectamente. Lo que no puedo es asociar las palabras del RTB a los códigos en el List. Y esto lo necesito para que al poner el cursor en una palabra pueda, mediante el botón derecho del mouse, seleccionar una opción "Ver código" y que en el List se marque el elemento correspondiente.
Aclaro que una palabra puede aparecer varias veces a lo largo del texto. Entonces, cuando se seleccione "Ver código" debiera seleccionarse el elemento correspondiente en el List.
No sé si aclaré u oscurecí...

Espero haber hecho lo primero.
¡Muchas gracias!
Saludos.