Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有计时器经过时间的c#组合框_C#_.net_Windows_.net 3.5 - Fatal编程技术网

带有计时器经过时间的c#组合框

带有计时器经过时间的c#组合框,c#,.net,windows,.net-3.5,C#,.net,Windows,.net 3.5,我有一个程序可以禁用锁屏并停止windows中的服务。我有两个按钮启用,禁用和一个组合框,有预设的时间。当我的程序运行且用户单击“启用”时,程序应禁用锁定屏幕,直到用户手动执行 单击“禁用”。我试图做到的是,如果用户从未点击“禁用”,则程序不会整夜运行。因此,通过从组合框中选择预设时间,程序将自动禁用它 public partial class Form1 : Form { public Form1() { InitializeComponent();

我有一个程序可以禁用锁屏并停止windows中的服务。我有两个按钮启用,禁用和一个组合框,有预设的时间。当我的程序运行且用户单击“启用”时,程序应禁用锁定屏幕,直到用户手动执行 单击“禁用”。我试图做到的是,如果用户从未点击“禁用”,则程序不会整夜运行。因此,通过从组合框中选择预设时间,程序将自动禁用它

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        DateTime time = DateTime.Today;
        for (DateTime _time = time.AddHours(16); _time < time.AddHours(18); _time = _time.AddMinutes(30))
        {
            comboBox1.Items.Add(_time.ToShortTimeString());
        }
    }

    private static System.Timers.Timer _Timer;
    private DateTime _lastRun = DateTime.Now;

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string strTime_Start = DateTime.Today.ToString();
        string strTime_End = comboBox1.SelectedItem.ToString();
    }

    public void button1_Click(object sender, EventArgs e)
    {
        button1.Enabled = false;
        button2.Enabled = true;


        _Timer = new System.Timers.Timer(10 * 60 * 1000);
        _Timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);

        DisableLock();
    }

    private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {

        if (strTime_End < DateTime.Now.Date) //I think this would be where I need to have strTime_End?
        {           
            _Timer.Stop();

            _lastRun = DateTime.Now;



        }
    }


}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
DateTime time=DateTime.Today;
for(DateTime _time=time.AddHours(16);_time
根据我目前的理解,您可以添加:

comboBox1.Enabled=false


当时间过去时,即在事件中。

根据我到目前为止的理解,您可以添加:

comboBox1.Enabled=false


当时间过去时,即在事件中。

我认为最简单的解决方案是为停止时间保留一个实例变量,并且您设置的每个组合框项都会设置此停止时间,timer\u tick事件只会检查它是否已过该时间。组合框中的空白项可以清除变量

private DateTime timeToStop;

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        timeToStop = DateTime.Now.Add(DateTime.Parse(comboBox1.Text));
    }
    catch(Exception)
    {
        timeToStop = new DateTime(3000, 01, 01, 00, 00, 00);
    }
}

public void disableButton_Click(object sender, EventArgs e)
{
    _Timer.Stop();
    _lastRun = DateTime.Now;
}

private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    if (DateTime.Now >= timeToStop)
    {
        _Timer.Stop();
        _lastRun = DateTime.Now;
        // Disable regkey
    }
}

在我看来,最简单的解决方案是为您的停止时间保留一个实例变量,并且您设置的每个组合框项都会设置此停止时间,timer\u tick事件只会检查它是否已超过该时间。组合框中的空白项可以清除变量

private DateTime timeToStop;

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        timeToStop = DateTime.Now.Add(DateTime.Parse(comboBox1.Text));
    }
    catch(Exception)
    {
        timeToStop = new DateTime(3000, 01, 01, 00, 00, 00);
    }
}

public void disableButton_Click(object sender, EventArgs e)
{
    _Timer.Stop();
    _lastRun = DateTime.Now;
}

private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    if (DateTime.Now >= timeToStop)
    {
        _Timer.Stop();
        _lastRun = DateTime.Now;
        // Disable regkey
    }
}

我不确定你在哪方面需要帮助。您有几件事需要考虑:一个正在工作的regkey转换器、一个服务、一个UI更新和一个状态检查,您特别需要哪一部分的帮助?例如,如果组合框中选择的时间已过(16:00),则希望它继续并停止计时器。如果(strTime\u End我不确定您在哪方面需要帮助。您有几件事需要考虑:一个正在工作的regkey转换器、一个服务、一个UI更新和一个状态检查,您特别需要哪一部分的帮助?例如,如果组合框中选择的时间已过(16:00),则希望它继续并停止计时器。如果(strTime\u End我重新编写了我想做的事情,会不会像
if(strTime\u End
。我有一个程序可以禁用锁屏并停止windows中的服务。我有两个按钮启用,禁用和一个组合框,有预设的时间。当我的程序运行且用户单击“启用”时,程序应禁用锁定屏幕,直到用户手动单击“禁用”。我试图做到的是,如果用户从未点击“禁用”,则程序不会整夜运行。因此,通过从组合框中选择一个预设时间,程序将自动禁用它。我重新编写了我试图执行的操作。我有一个程序可以禁用锁屏并停止windows中的服务。我有两个按钮启用,禁用和一个组合框,有预设的时间。当我的程序运行且用户单击“启用”时,程序应禁用锁定屏幕,直到用户手动单击“禁用”。我试图做到的是,如果用户从未点击“禁用”,则程序不会整夜运行。因此,通过从组合框中选择一个预设时间,程序将自动禁用它开始工作。我不断收到错误2参数“1”:无法从“System.DateTime”转换为“System.TimeSpan”。不确定我错了什么。
timeToStop=DateTime.Now.Add(TimeSpan.Parse(comboBox1.Text))。在未来的项目中,在处理日期和时间时会遇到一些问题,我的建议是阅读MSDN DateTime&TimeSpan.ToString()和.Parse()方法,看看它们是如何工作的。选择一种在项目中易于理解的近似通用格式(存储和计算),然后担心用户本地时间区域性只是一个显示问题。并且强制执行严格的输入格式(您的或他们的,取决于您的经验),我似乎无法获得
timeToStop=DateTime.Now.Add(DateTime.Parse(comboBox1.Text));
无法工作。我不断收到错误2参数“1”:无法从“System.DateTime”转换为“System.TimeSpan”。不确定我有什么错误。
timeToStop=DateTime.Now.Add(TimeSpan.Parse(comboBox1.Text));
。在将来的项目中,使用日期和时间时会遇到一些问题,我的建议是阅读MSDN DateTime&TimeSpan.ToString()和.Parse()方法,看看它们是如何工作的。确定一种在项目中易于理解的近似通用格式(存储和计算),然后担心用户本地时间文化只是作为一个显示问题。并强制执行严格的输入格式(您的或他们的格式取决于您的前