none
richtextbox中插入的图片的事件响应问题 RRS feed

  • 问题

  • 在wpf的richtextbox中插入了一个图片,想在用户点击此图片时响应事件,我是这么做的:

     private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
             {
                 if (Clipboard.ContainsImage())
                 {
                    // p1.Inlines.Add(new InlineUIContainer(new Image() { Source = Clipboard.GetImage(), Stretch = Stretch.None }));
                     Image img = new Image() { Source = Clipboard.GetImage(), Stretch = Stretch.None };
                     InlineUIContainer inline = new InlineUIContainer(img);//, richTextBox1.Selection.Start);
                     inline.MouseDown += new MouseButtonEventHandler(inline_MouseDown);
                     Paragraph para = this.richTextBox1.Document.Blocks.LastBlock as Paragraph;
                     para.Inlines.Add(inline);
                  }
             }

     void inline_MouseDown(object sender, MouseButtonEventArgs e)
             {
                 //throw new NotImplementedException();

                 单击图片时,这里走不到。
             }

     

    图片能正常插入,但是事件不响应,请看看是什么原因,正确的应该怎么写?

    2011年10月29日 2:49

答案

  • 你可以注册一个RichTextBox的PreviewMouseDown事件,然后判断鼠标点击的是不是你想添加点击事件的控件(比如图片),代码如下:

    private void richTextBox1_PreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
    
        TextPointer position = richTextBox1.GetPositionFromPoint(e.GetPosition(richTextBox1), false /* snapToText */);
    
        if (position == null)
        {
            return;
        }
    
        UIElement uiElement = position.GetAdjacentElement(position.LogicalDirection) as UIElement;
    
        if (uiElement != null && (uiElement is Image))
        {
    
            //在这里做处理
        }
    }
    


    你可以改变“uiElement is Image” ,可以改成自己的判断条件。

     

    Best regards,


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年11月1日 9:31
    版主