如何让面板Canvas里的控件获取鼠标事件

TimDavid 2010-02-10 02:17:36
我在Canvas里面添加几个TextBlock控件,我把鼠标事件写在Canvas里面(MouseLeftButtonDown)。我现在想把Canvas触发的事件,给鼠标当前位置的TextBlock来处理。我没写TextBlock的任何事件,我也无法获取TextBlock的实例名。如何为TextBlock添加对Canvas.MouseLeftButtonDown的捕获。就是说我鼠标按下。在第2个TextBlock的文字要变成黑色的。开始时红色的

<Canvas x:Name="Container"
Height="800"
Width="600"
MouseLeftButtonDown="Container_MouseLeftButtonDown"
MouseMove="Container_MouseMove"
MouseLeftButtonUp="Container_MouseLeftButtonUp"
Background="White">
<TextBlock Text="Hello World!"
Foreground="Red" />
<TextBlock Canvas.Left="100" Text="Hello World!"
Foreground="Red" />
<TextBlock Canvas.Left="300" Text="Hello World!"
Foreground="Red" />



</Canvas>
...全文
314 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingjunli 2010-02-11
  • 打赏
  • 举报
回复
引用楼主 timdavid 的回复:
我在Canvas里面添加几个TextBlock控件,我把鼠标事件写在Canvas里面(MouseLeftButtonDown)。我现在想把Canvas触发的事件,给鼠标当前位置的TextBlock来处理。我没写TextBlock的任何事件,我也无法获取TextBlock的实例名。如何为TextBlock添加对Canvas.MouseLeftButtonDown的捕获。就是说我鼠标按下。在第2个TextBlock的文字要变成黑色的。开始时红色的
XML code<Canvasx:Name="Container"
Height="800"
Width="600"
MouseLeftButtonDown="Container_MouseLeftButtonDown"
MouseMove="Container_MouseMove"
MouseLeftButtonUp="Container_MouseLeftButtonUp"
Background="White"><TextBlockText="Hello World!"
Foreground="Red"/><TextBlockCanvas.Left="100" Text="Hello World!"
Foreground="Red"/><TextBlockCanvas.Left="300" Text="Hello World!"
Foreground="Red"/></Canvas>


其实这样还是建议为TextBlock 注册事件 通过"sender as TextBlock" 取事件触发的对象
运行时效率占有(省去事件递归和命中测试)
Goldfire_001 2010-02-10
  • 打赏
  • 举报
回复
引用 2 楼 timdavid 的回复:
这样的在单步调试的时候block的对象是null。抛出异常。

童鞋,block当然可能是Null。我又不能保证所有的OriginalSource都是TextBlock。

可是,我不是在if里判Null了么。又抛哪门子的异常啊?

TimDavid 2010-02-10
  • 打赏
  • 举报
回复
这样的在单步调试的时候block的对象是null。抛出异常。
Goldfire_001 2010-02-10
  • 打赏
  • 举报
回复
private void Container_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
TextBlock block = e.OriginalSource as TextBlock;
if (block != null)
{
block.Foreground = new SolidColorBrush(Colors.Black);
}
}

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧