C# c-如何将复选框、日期时间选择器和文本框值转换为整数

C# c-如何将复选框、日期时间选择器和文本框值转换为整数,c#,winforms,button,C#,Winforms,Button,感谢那些回复你的人,你的解决方案是正确的! @向留言板致歉,因为问题太多,不够具体 我一直在试验我所得到的解决方案,为了按照提供的解决方案保持一致,我有以下代码: 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

感谢那些回复你的人,你的解决方案是正确的! @向留言板致歉,因为问题太多,不够具体

我一直在试验我所得到的解决方案,为了按照提供的解决方案保持一致,我有以下代码:

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);
单击确定按钮时,我有一个值字符串,即: 882015,5,17,22,6,532015,05,17,22,06,53,0,0,0,0,0,0,0,0,0,0,0

我将通过串行方式将它们发送给Arduino,问题是它们目前的格式

arduino希望它们的格式数据类型与从串行终端窗口发送的格式数据类型相同,并且不添加换行符。 当我在串行终端窗口中键入这个882015,5,17,22,6,532015,05,17,22,06,53,0,0,0,0,0,0,0时,它当前正在工作

我的问题是如何将变量mystr的值设置/更改为arduino需要的值

我目前正在Arduino上使用Serial.parseint来接收由逗号分隔的值,并将它们加载到变量中

非常感谢您的帮助

D

供参考..这是我最初的问题:

我创建了一个Windows窗体,它当前有9个复选框 我不知道这是不是正确的选择。还有一个按钮和2 文本框

目前,我在文本框中以 YYYY、MM、DD、hh、MM、ss,然后我选中复选框值,当 选中的应返回1,如果未选中,则返回0

我意识到这似乎是一个非常基本的问题,但我似乎不能 找到我想要的答案

我希望在单击按钮时发生以下情况:

生成/创建了一个字符串get。最后我会寄这个 通过串口发送出去。不确定这是否是我应该使用的变量类型 如果可能的话,我会很感激你和我的榜样

字符串/int/message由两个日期或作为unix组成 时间戳或每个复选框值的选项
0或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顺序必须与希望其输出显示在最终字符串中的顺序相匹配。您可以通过拖放文档大纲窗口来调整z顺序,该窗口可以从“视图”>“其他窗口”菜单打开。

如果您能发布一些关于您尝试过的内容以及您尝试执行的内容的实际代码,肯定会有所帮助。.OP不是在要求c吗?@MickyDuncan,混蛋!我花了比C更多的时间来解决VB问题,我忘记了这是一个C问题。我会用C替换代码。没问题。你修改后的答案更好!@本……谢谢你@谢谢你,非常感谢。@你们两个……这些答案都很准确。@主持人,请你重新回答我的问题,因为我真的很想得到一些指导,一个轻推和一点光亮。我对此几乎不知所措。
string s = null;

if (checkbox.checked)
    s = "1";
else
    s = "0";