2011-03-05 92 views
2

嘿,我有一个richtextbox。要添加内容我这样做c#wpf richtextbox运行mouseup

Paragraph p = new Paragraph(); 
Run r; 
r = new Run("[" + user + "]: "); 
b = System.Windows.Media.Brushes.Black; 
if (user.Equals(Program.LClient.strUserName)) 
    b = Brushes.Blue; 
r.Foreground = b; 
r.ToolTip = DateTime.Now.ToLongTimeString() + " " + DateTime.Now.ToLongDateString() + "\nClick to whisper"; 
r.Cursor = Cursors.Hand; 
r.Background = Brushes.White; 
r.MouseEnter += delegate(object sender, MouseEventArgs e) 
{ 
    r.Background = new RadialGradientBrush(Colors.DarkGray, Colors.WhiteSmoke); 

}; 
r.MouseLeave += delegate(object sender, MouseEventArgs e) 
{ 
    r.Background = Brushes.White; 
}; 
r.PreviewMouseUp += delegate(object sender, MouseButtonEventArgs e) 
{ 
    tbMess.Text = "/w " + user + " "; 
    tbMess.Focus(); 
}; 
p.Inlines.Add(new Bold(r)); 
rtbChat.Document.Blocks.Add(p); 

一切正常,除了我可以注册任何鼠标松开/关闭事件。鼠标进入和离开工作正常,只是由于某种原因不能得到任何buttonevents。另外,我没有任何注册到RichTextBox的鼠标事件。

另外,在给出替代方法来做到这一点之前阅读此。

我对寻找一种新方法不感兴趣。我知道我可以保留一系列我想跟踪的不同元素的位置,但我对此并不感兴趣。我没有发现任何文档说mouseup/down事件不可用于运行,所以必须有一种方法。

在此先感谢您的帮助。

+0

“除了我无法注册任何mouseup/down事件,一切正常。”你得到一个错误,还是只是不工作? – 2011-03-05 02:21:33

+0

@Mike Caron它不起作用。没有错误。我在委托内部放置了一个调试点,它永远不会到达,它里面没有任何事情发生。对于mouseup,mousedown,leftmouseup,leftmousedown等事件来说,这是事实。 – 2011-03-05 02:26:54

回答

3

发现了这个awnser。在wpf中的文本框和富文本框中,点击不会注册或者其他东西。你可以用它来注册点击

r.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(delegate(object sender, MouseButtonEventArgs e) 
{ 
//code here 
}));