2015-04-30 20 views
-2

感謝那些回覆,你的解決方案是現貨! @用於重載問題而不是特定的問題。c# - 如何將複選框,日期時間選擇器和文本框的值轉換爲整數

我一直在嘗試我一直在考慮什麼作爲解決方案,並以讓事情按照該解決方案所提供我有下面的代碼是一致的:

var mystr = String.Format("{0},{1:yyyy,M,d,H,m,s},{2:yyyy,MM,dd,HH,mm,ss},{3},{4},{5},{6},{7},{8},{9},{10}", 
       this.textBox3.Text, //0 
       this.dateTimePicker1.Value,//1 
        this.dateTimePicker2.Value,//2 
        Convert.ToInt32(this.checkBox1.Checked),//3 
        Convert.ToInt32(this.checkBox2.Checked),//4 
        Convert.ToInt32(this.checkBox3.Checked),//5 
        Convert.ToInt32(this.checkBox4.Checked),//6 
        Convert.ToInt32(this.checkBox5.Checked),//7 
        Convert.ToInt32(this.checkBox6.Checked),//8 
        Convert.ToInt32(this.checkBox7.Checked),//9 
        Convert.ToInt32(this.checkBox8.Checked));//10 

      textBox1.Text = mystr; 
      MessageBox.Show("The value entered is: " + mystr , " Alarm DATA", MessageBoxButtons.OK); 

在點擊確定按鈕我有一個字符串的數值即: 88,2015,5,17,22,6,53,2015,05,17,22,06,53,0,0,0,0,0,0,0,0

我將通過串口將這些發送到Arduino,問題是他們目前的格式。

arduino希望它們的格式(數據類型)與從串行終端窗口發送的格式相同,並且不添加換行符。 (當前正在工作的時候我輸入了這個88,2015,5,17,22,6,53,2015,05,17,22,06,53,0,0,0,0,0,0,0, 0到串行終端窗口。

我的問題是,如何我設置/變量myStr中的值更改爲什麼Arduino的需求呢?我目前使用的Arduino的Serial.parseint()接收

用逗號分隔和值,並將它們加載到變量。

任何幫助不勝感激。

d

僅供參考..Here的我原來的問題:

我創建了目前有9個複選框(我 不知道這是否是正確的選擇。)Windows窗體以及按鈕和2 文本框。

在我在 YYYY,MM,DD,HH,毫米,SS的形式鍵入日期,文本框,然後我選擇其中當 選擇應該返回1複選框值和力矩如果未被選擇一個0

我意識到這可能看起來像一個非常基本的問題,但我似乎無法 找到我正在尋找的答案。

我想下面當我點擊按鈕要發生:

單一字符串獲取的生成/創建。 (最終我會通過串行發送這個 (不知道這是否是變量類型,我應該使用 ,如果可能的話,我將不勝感激)。兩個日期的

字符串/ INT /消息包括(或如UNIX 時間戳或任選項),並且每個複選框值(無論是 0或1)< <這是我爭奪找到信息以及 datetime選擇器)

所以實際的字符串看起來像這樣: 2015,4,30,3,0,5,2015,4,30,3,0,10,0, 1,0,0(其中格式爲 date1,date2,checkbox1,checkbox2,checkbox3,checkbox4)

我目前可以使用checkbox.text字段,但我寧願 只是從每個作爲零或1來構建我的 string/int/message。

我正在使用C#VS express。

+1

肯定會幫助,如果你將張貼在問候你已經嘗試以及你正在嘗試做.. – MethodMan

+0

_ [我如何問一個很好的問題?(HTTP一些實際的代碼:/ /stackoverflow.com/help/how-to-ask)_ – MickyD

回答

1

首先,我會建議使用DateTimePicker來輸入日期和時間。你可以讓它顯示任何你喜歡的格式,並且它會爲你處理驗證,確保用戶永遠不會輸入無效格式或無效值。那麼你可以做這樣的事情:

var str = String.Format("{0:yyyy,M,d,H,m,s},{1:yyyy,M,d,H,m,s},{2},{3},{4}", 
         this.dateTimePicker1.Value, 
         this.dateTimePicker2.Value, 
         Convert.ToInt32(this.checkBox1.Checked), 
         Convert.ToInt32(this.checkBox2.Checked), 
         Convert.ToInt32(this.checkBox3.Checked)); 

如果你想要的東西更通用的,試試這個:

var dates = this.Controls.Cast<Control>() 
         .OfType<DateTimePicker>() 
         .Select(dtp => dtp.Value.ToString("yyyy,M,d,H,m,s")); 
var bools = this.Controls.Cast<Control>() 
         .OfType<CheckBox>() 
         .Select(cb => Convert.ToInt32(cb.Checked).ToString()); 
var str = String.Join(",", dates.Concat(bools).ToArray()); 

,將與任意數量的控制與任何名稱的工作。需要注意的是,每組控件的z順序必須與您希望其輸出在最終的String中出現的順序相匹配。您可以通過在「文檔大綱」窗口中拖放來調整z順序,該窗口可以從「視圖」>「其他Windows」菜單中打開。

+1

是不是要求C#? – MickyD

+0

@MickyDuncan,雞姦!我在這裏花費了更多時間討論VB問題,而不是C#,我忘記了這是一個C#問題。我將用C#替換代碼。 – jmcilhinney

+0

沒問題。你的修改答案更好! – MickyD

0
string s = null; 

if (checkbox.checked) 
    s = "1"; 
else 
    s = "0"; 
相關問題