我在c#Visual Studio 2012中有一个Windows窗体应用程序,上面有一个button_click。我试图做的是跟随。 应用程序工作正常,每当我点击我的按钮时,应用程序就会执行我想要做的事情。我需要在每天的基础上做这个问题,我不会在那里手动点击我自己的按钮。有一种方法可以自动安排日程表自动启动按钮吗?所以我会一直打开应用程序,所以每天都会按下按钮。
提前多多感谢。
答案 0 :(得分:-1)
您需要做的是将事件处理程序代码集中到类库中。然后您的事件处理程序可以调用该集中式方法。完成后,您可以创建一个控制台应用程序或Windows服务,如上面建议的L-Three。
// Event handler
private void button1_Click(object sender, EventArgs args)
{
LibraryClass.DoStuff(...); // Pass whatever parameters might be needed
}
// In a separate project
public class LibraryClass
{
public static void DoStuff(...)
{
// Move the code from your event handler here
}
}
// In a console app
class Program
{
static void Main(string [] args)
{
LibraryClass.DoStuff(...); // pass whatever parameters are needed
}
}
答案 1 :(得分:-2)
使用间隔为1000的计时器并检查当前日期是否已更改。然后单击"按钮"。
答案 2 :(得分:-2)
你好Benjamin Arancibia,你可以这样做:
在App.config中添加变量以在任务发生时保存控件。
<appSettings>
<add key="executeDailyService" value="true"/>
<add key="dailyServiceTime" value="08:00-18:00"/>
<add key="dailyServiceInterval" value="1"/>
</appSettings>
executeDailyService =选项,指示任务是否每天都会发生 dailyServiceTime =用于指定它可以在此处发生的时间段的选项可以自定义例如:13:00-14:00 dailyServiceInterval =用于通知任务将发生的天数的选项,例如: 1 =每天,2 =每隔一天... n
启动应用程序时,请启动以下方法:
private void startTimer()
{
// Loads the variables that will be used
var executeDailyService = ConfigurationManager.AppSettings["executeDailyService"];
var dailyServiceTime = ConfigurationManager.AppSettings["dailyServiceTime"];
var dailyServiceInterval = ConfigurationManager.AppSettings["dailyServiceInterval"];
// Validates that the variables are loaded
if (executeDailyService != "true" || String.IsNullOrEmpty(dailyServiceTime) || String.IsNullOrEmpty(dailyServiceInterval))
return;
// Timer that controls the automatic execution of code
var timer = new Timer();
timer.Interval = Convert.ToInt32(dailyServiceInterval) * 60 * 1000; // Calculates how often will run your code
timer.Elapsed += new ElapsedEventHandler(services);
timer.Start();
}
private void services(object sender, ElapsedEventArgs e)
{
// Loads of the variable time period
var dailyServiceTime = ConfigurationManager.AppSettings["dailyServiceTime"];
// Validates the contents of the variable is in the correct format
if (String.IsNullOrEmpty(dailyServiceTime) || !dailyServiceTime.IsMatch("^\\d{2}:\\d{2}-\\d{2}:\\d{2}$"))
return;
// Calculates whether the current time is within the range you set
var now = Util.Now();
var dateBegin = Util.DateTime(now.Year, now.Month, now.Day, Convert.ToInt32(dailyServiceTime.Substring(0, 2)), Convert.ToInt32(dailyServiceTime.Substring(3, 2)), 0);
var dateEnd = Util.DateTime(now.Year, now.Month, now.Day, Convert.ToInt32(dailyServiceTime.Substring(6, 2)), Convert.ToInt32(dailyServiceTime.Substring(9, 2)), 0);
if (dateBegin > dateEnd || now < dateBegin || now > dateEnd)
return;
var timer = sender as Timer;
timer.Stop();
// You code here
timer.Start();
}