2017-04-22 90 views
0

這只是一個簡單的問題,爲了提高我的技能,我想解決這個問題。我希望我的方法選擇時間運行,並且我還希望我放入RunEvent的條件從selecttime接收字符串selecttime的值。如果您對此做出回覆,我非常感謝您。c#我應該如何讓我的方法準時運行

public partial class Form1 : Form 
{ 
    int hourt; 
    int minutet; 
    string hourformatt; 
    string selectedtime; 
    Timer tm = new Timer(); 

    public Form1() 
    { 
     InitializeComponent();   
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     tm.Interval = 1000; 
     tm.Tick += new EventHandler(RunEvent); 
     tm.Start(); 
    } 

    private void RunEvent(object sender, System.EventArgs e) 
    { 
     label1.Text = DateTime.Now.ToLongTimeString(); 
     DateTime dateT = DateTime.Now; // created datetime 

      if (dateT.ToString("hh:mm tt") == selectedtime) // condition where dateT.ToString is equal to selectedtime 
      { 
       MessageBox.Show("Please work"); // expected output whenever dateT.ToString is equal to selected time. 
      }     
    } 

    private void selectingtime() 
    { 
     hourt = Convert.ToInt32(textBox1.Text); //textbox for hour 
     minutet = Convert.ToInt32(textBox2.Text); // textbox for minute 
     hourformatt = textBox3.Text; // textbox for AM or PM 
     selectedtime = hourt + ":" + minutet + " " + hourformatt; // example 05:31 PM 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     selectingtime();   
    } 
+0

err ...你的問題究竟是什麼。此外,所有額外的空格真的讓你的代碼難以閱讀 – BradleyDotNET

+0

我的問題是如何使private void void()運行在private void RunEvent(object sender,System.EventArgs e)中。先生好像是什麼問題?我真的很抱歉,當我被要求在發佈之前縮進一些聲明時,我過去常常會佔用太多的空間空間 –

+1

您的問題尚不清楚......如果您想在RunEvent中運行方法'selectingtime()' '方法......就像在按鈕單擊事件中一樣調用它。解釋你試圖完成的內容可能是有益的,因爲發佈的代碼和你對問題的描述沒有多大意義。 – JohnG

回答

0
private void RunEvent(object sender, System.EventArgs e) 
{ 
    selectingtime(); //This? 
    label1.Text = DateTime.Now.ToLongTimeString(); 

    DateTime dateT = DateTime.Now; // created datetime 

    if (dateT.ToString("hh:mm tt") == selectedtime) // condition where dateT.ToString is equal to selectedtime 
    { 
     MessageBox.Show("Please work"); // expected output whenever dateT.ToString is equal to selected time. 
    } 
} 

雖然,我想你可能會在INT32錯誤轉換時的texbox爲null,空,或有非數字字符。在這種情況下,您可能需要實施嘗試解析。此外,如果你堅持從方法中「獲取」選擇時間的想法,那麼你需要讓它返回一個字符串 - 雖然這可能會滿足你的請求,但我不認爲它必定是一個「改進」 。

P.S.您不需要創建帶有事件處理程序實例的滴答事件,並使用事件方法傳遞。

private void Form1_Load(object sender, EventArgs e) 
    { 
     tm.Interval = 1000; 
     tm.Tick += RunEvent; 
     tm.Start(); 
    } 

    private void RunEvent(object sender, System.EventArgs e) 
    { 
     var selectedTime = selectingtime(); 
     label1.Text = DateTime.Now.ToLongTimeString(); 

     DateTime dateT = DateTime.Now; // created datetime 

     if (dateT.ToString("hh:mm tt") == selectedTime) // condition where dateT.ToString is equal to selectedtime 
     { 
      textBox1.Clear(); 
      textBox2.Clear(); 
      MessageBox.Show("Please work"); // expected output whenever dateT.ToString is equal to selected time. 
     } 
    } 

    private string selectingtime() 
    { 
     DateTime time; 
     string timeFormat = string.Format("{0}:{1} {2}", textBox1.Text, textBox2.Text, textBox3.Text); 
     DateTime.TryParse(timeFormat, out time); 
     return time.ToString("hh:mm tt"); 
    } 
+0

Sir Toskr,按鈕怎麼樣?我其實是一個初學者。我真的很抱歉。 –

+0

好吧,如果我們在檢查條件之前總是檢查Tick事件中的文本框值,那麼看起來我們甚至不再需要該按鈕 - 因爲按鈕任務已經完成。如果你想保持按鈕設置,那麼我會建議堅持你所擁有的。 – Toskr

+0

非常感謝你在我完成了我的家務後,我會試試你的這個答案。你的回答對我來說是很容易理解的。 –

相關問題