WPF手动触发MouseUp

欢乐马_19e9 2013-01-08 10:20:23
自己向写一个自定义 listBox 控件,使它拥有HoverTime事件。代码如下:

    public class CustomImageControl : Image
{
private const int nHoverTimeSenconds = 2;
private const int nHoverTimeMilliseconds = 0;
private DispatcherTimer timeHover;
public CustomImageControl()
: base()
{
timeHover = new DispatcherTimer();
timeHover.Tick += (sender, e) =>
{
// 些处想触发 OnMouseUp 事件,应该怎么写。
System.Windows.MessageBox.Show("Yes");
};
timeHover.Interval = new TimeSpan(0, 0, 0, nHoverTimeSenconds, nHoverTimeMilliseconds);
}
protected override void OnMouseEnter(System.Windows.Input.MouseEventArgs e)
{
base.OnMouseEnter(e);
timeHover.Start();
}
protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e)
{
base.OnMouseLeave(e);
timeHover.Stop();
}
}

百度、谷歌了半天了,写不出来啊!大神,我来了,你在哪?
...全文
317 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
欢乐马_19e9 2013-01-08
  • 打赏
  • 举报
回复
引用 3 楼 lhx527099095 的回复:
image有mouseleftbuttonup 和down的事件 是一样用的啊 楼主可以试试 而且楼主最好不要用这种系统事件 而是自己写一个事件 事件到了抛出来 然后外面用他就可以了啊 在里面写 public event EventHandler<EventArgs> OnTimeUp; public CustomImageControl() ……
谢谢大神帮助! 已成功完成,结贴!
lhx527099095 2013-01-08
  • 打赏
  • 举报
回复
就是自己抛自己的事件就可以了 不要用系统事件 特别是鼠标事件 键盘事件这类的
lhx527099095 2013-01-08
  • 打赏
  • 举报
回复
image有mouseleftbuttonup 和down的事件 是一样用的啊 楼主可以试试 而且楼主最好不要用这种系统事件 而是自己写一个事件 事件到了抛出来 然后外面用他就可以了啊 在里面写 public event EventHandler<EventArgs> OnTimeUp; public CustomImageControl() : base() { timeHover = new DispatcherTimer(); timeHover.Tick += (sender, e) => { // 些处想触发 OnMouseUp 事件,应该怎么写。 if(this.OnTimeUp!=null) this.OnTimeUp(this,new EventArgs()); System.Windows.MessageBox.Show("Yes"); }; timeHover.Interval = new TimeSpan(0, 0, 0, nHoverTimeSenconds, nHoverTimeMilliseconds); } 在外面写 image.OnTimeUp+= image_MouseUp; // MouseUp 是在这里写的代码
欢乐马_19e9 2013-01-08
  • 打赏
  • 举报
回复
引用 1 楼 lhx527099095 的回复:
一般情况下mouse的事件都是通过鼠标去触发的
不是啊,因为我这个是控件,所以不能按你说的方法写啊。
引用
你可以把你要干的事情直接写在一个函数里面
再看一下我前面的代码:
        public MainWindow() // 这里是主窗口函数
        {
            InitializeComponent();

            for (int i = 0; i < 16 ; i++)
            {
                CustomImageControl image = new CustomImageControl()
                {
                    Height = 150,
                    Source = new BitmapImage(new Uri(String.Format("Images/{0}.jpg",1), UriKind.Relative)),
                };
                image.MouseUp += image_MouseUp; // MouseUp 是在这里写的代码
                this.customPanel.Children.Add(image);
            }
        }
        void image_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            Image thisImage = sender as Image;
            // 做一些其它对主窗口的事
        }
我就是想让 HoverTime 到时间了触发一下 MouseUp 。本来想用 Click 的,可是 Image 没有 Click 事件。
lhx527099095 2013-01-08
  • 打赏
  • 举报
回复
一般情况下mouse的事件都是通过鼠标去触发的 你只可以写鼠标事件触发后的处理方法 而这些都在override void OnMouseEnter这类方法里面写 不知道楼主需要实现什么功能? 你可以把你要干的事情直接写在一个函数里面 然后OnMouseUp掉这个函数就是了 这样在你// 些处想触发 OnMouseUp 事件,应该怎么写。 这里相当于执行和OnMouseUp 一样的东西不就行了么?
lhx527099095 2013-01-08
  • 打赏
  • 举报
回复
引用 5 楼 kingsollyu 的回复:
引用 3 楼 lhx527099095 的回复:image有mouseleftbuttonup 和down的事件 是一样用的啊 楼主可以试试 而且楼主最好不要用这种系统事件 而是自己写一个事件 事件到了抛出来 然后外面用他就可以了啊 在里面写 public event EventHandler<EventArgs> OnTimeUp; public Custo……
客气...大神算不上 过奖了 受不起 互相帮忙 共同提高而已

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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