iT邦幫忙

0

C# 請問 一個 timer 小語法

 InitializeComponent();
  int time = Convert.ToInt32(textBox1.ToString());
  timer1.Interval = 1000 * time;
   timer1.Enabled = true;
   timer1.Start();

其中

 timer1.Interval = 1000;

正常來說這樣
但為了客戶說 他要活得,在Textbox 上寫多少數字 他時間徘成多久跑一次他要自己決定
所以

int time = Convert.ToInt32(textBox1.ToString());
timer1.Interval = 1000 * time;

這樣寫法,卻發生Bug 不太懂 哪裡錯...說"輸入字串錯誤"/images/emoticon/emoticon06.gif

看更多先前的討論...收起先前的討論...
圓頭人 iT邦研究生 5 級 ‧ 2018-09-07 13:39:39 檢舉
因為textobx.text還沒被輸入,就跑load了.
1.給textbox.text預設值
2.判斷textbox.text有沒有值,如果沒有值,給預設值
ted8224 iT邦新手 5 級 ‧ 2018-09-07 13:42:10 檢舉
textBox1.Text ="0";
好像不是這樣齁?

因為要給客戶輸入說..
優悠 iT邦新手 3 級 ‧ 2018-09-07 13:49:58 檢舉
textBox1.text
優悠 iT邦新手 3 級 ‧ 2018-09-07 13:52:02 檢舉
string stext=textBox1.text;
if (IsNullOrEmpty(stext))
stext="0";
類似這樣給預設值
圓頭人 iT邦研究生 5 級 ‧ 2018-09-07 13:55:41 檢舉
客戶輸入後,會按下確定
確定的時侯,再給timer1.Interval = 1000 * time;

不要在Load的時侯就給,那時侯客戶還沒有輸入.
1.不可以寫在初始化
初始化的時候 TextBox 還沒給值
2.是textBox1.Text.ToString()不是textBox1.ToString()
米歐 iT邦新手 3 級 ‧ 2018-09-07 14:44:11 檢舉
可以養成debug的習慣,遇到問題把方法拆開來看,如
var a = textBox1.ToString();
var b = Convert.ToInt32(a);
來確認哪一個步驟錯誤並且知道當下的值是什麼 :)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
WilliamHuang
iT邦研究生 1 級 ‧ 2018-09-07 13:52:34

那換我問你
數字可以運算
還是字串可以運算

ted8224 iT邦新手 5 級 ‧ 2018-09-07 13:58:33 檢舉

有加轉換了 , 不能?

Convert.ToInt32
0
Luke
iT邦研究生 5 級 ‧ 2018-09-07 14:35:46

怎麼不用
NumericUpDown

TextBox ,您還要去確認是否輸入的是數字,還是空白+ 數字
還是英文字...等

0
小魚
iT邦大師 1 級 ‧ 2018-09-07 20:25:54

建議按下確定之後再改,
一開始就先設為1秒,
或是按下確定之後,
如果沒有開始跑Timer再開始跑,
這就看你們要怎麼設計了...

小魚 iT邦大師 1 級 ‧ 2018-09-07 20:36:00 檢舉

做了一個小程式
https://ithelp.ithome.com.tw/upload/images/20180907/201056947JQjSNRZac.jpg

private void button1_Click(object sender, EventArgs e)
{
    int number = 0;
    if(Int32.TryParse(textBox1.Text, out number))
    {
        timer1.Interval = number * 1000;
    }
    else
    {
        MessageBox.Show("請輸入數字");
    }
}
小魚 iT邦大師 1 級 ‧ 2018-09-07 20:42:08 檢舉

Convert.ToInt32如果遇到無法轉換的,就會拋出例外。如果沒有用Try Catch包起來,會導致程式Crash

另外Timer沒辦法很準,會有一些時間差,這是無法避免的。

ted8224 iT邦新手 5 級 ‧ 2018-09-08 22:27:19 檢舉


小魚大..我已經知道問題點在哪了

0

int time = Convert.ToInt32(textBox1.ToString());
這句明顯就是錯誤了,textBox1是個物件,它不是屬性值,無法直接作ToString的處理,
看來也是對最基本的物件沒有了解,才會犯這樣的錯誤

ted8224 iT邦新手 5 級 ‧ 2018-09-08 22:26:39 檢舉
int time = Convert.ToInt32(textBox1.Text.ToString());

我要發表回答

立即登入回答