WPF如何每隔一段时间自动执行某个BUTTON?

mjx2004 2010-08-13 01:23:46
在C#中有PerformClick();而在WPF中没有。

public void Load(object sender, System.EventArgs e)
{
System.Timers.Timer t = new System.Timers.Timer(1000*60);
t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_TimesUp);
t.AutoReset = true;
t.Enabled = true;
}
public void Timer_TimesUp(object sender, System.Timers.ElapsedEventArgs e)
{
//这里怎么写才能自动执行button?
}


我在网上找了一段代码,但是调用这个方法不起作用。

public static void PerformClick(this ButtonBase button)
{
var method = button.GetType().GetMethod("OnClick",
BindingFlags.NonPublic | BindingFlags.Instance);

if (method != null)
{
method.Invoke(button, null);
}
// button.Focus();
}
...全文
417 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
asd03055zx 2010-08-18
  • 打赏
  • 举报
回复
我试过了,这个是可以运行的。每两秒弹出一个MessageBox
asd03055zx 2010-08-18
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Reflection;
using System.Windows.Forms;
using System.Timers;

namespace ConsoleApplication4
{
class Program
{
static Button button;
static System.Timers.Timer t;
static void Main(string[] args)
{
button = new Button();
button.Click += new EventHandler(button_Click);

t = new System.Timers.Timer(10000);
t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
t.Interval = 2000;
t.Enabled = true;
Console.ReadLine();
}

public static void PerformClick(ButtonBase button)
{
var method = button.GetType().GetMethod("OnClick",
BindingFlags.NonPublic | BindingFlags.Instance);

if (method != null)
{
method.Invoke(button, new object[] { null });
}
button.Focus();
}
static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
PerformClick(button);
}

static void button_Click(object sender, EventArgs e)
{
MessageBox.Show("aaa");
}
}
}
ch5201314zt 2010-08-13
  • 打赏
  • 举报
回复
换一个思路,BUTTON的单击事件 是执行某段代码,将这段代码封装成方法,定时调用这个方法即可!

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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