Insertar imagen en la posición del cursor en el cuadro de texto enriquecido

Sé que hay varias preguntas como esta, pero las pregunto porque no pude entender todas las respuestas. yo tengoRichTextBox y quiero que el usuario pueda insertar una imagen en la posición actual del cursor.

He intentado usar elClipboard para configurar la imagen y luego pegarla en el cuadro de texto enriquecido. Esto funciona, pero me han dicho que es una mala práctica, ya que cambia los datos en un cliboard sin notificar al usuario.

Esto es lo que he intentado.

    private bool CheckIfImage(string filename)
    {
        if (filename.EndsWith(".jpeg")) { return true; }
        else if (filename.EndsWith(".jpg")) { return true; }
        else if (filename.EndsWith(".png")) { return true; }
        else if (filename.EndsWith(".ico")) { return true; }
        else if (filename.EndsWith(".gif")) { return true; }
        else if (filename.EndsWith(".bmp")) { return true; }
        else if (filename.EndsWith(".emp")) { return true; }
        else if (filename.EndsWith(".wmf")) { return true; }
        else if (filename.EndsWith(".tiff")) { return true; }
        else { return false; }
    }

    private void openFileDialog2_FileOk(object sender, CancelEventArgs e)
    {
        if (CheckIfImage(openFileDialog2.FileName.ToLower()) == true)
        {
            Image img = Image.FromFile(openFileDialog2.FileName);
            string setData = (String)Clipboard.GetData(DataFormats.Rtf);

            Clipboard.SetImage(img);
            rtbType.Paste();

            Clipboard.SetData(DataFormats.Rtf, setData);
        }
        else
        {
            MessageBox.Show("Invalid Image File Selected");
        } 
    }

Por favor, ¿hay alguna manera mejor de hacer esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta