当前位置:编程学习 > C#/ASP.NET >>

超级简单的循环问题

if (checkBox1.Checked == true)
            {
                serialPort1.Open();
                do
                {
                    Write(textBox1.Text);
                }
                while (checkBox1.Checked == false);
            }
                
                serialPort1.Close();

我有一个checkbox1,我想让当checkbox选中时,一直向串口serialport1写东西
现在只能写一次,我不知道改怎么改,或者用别的什么语句? --------------------编程问答-------------------- while(checkbox1.Checked){
    Write(.....);
} --------------------编程问答-------------------- if (checkBox1.Checked == true) 
            { 
                serialPort1.Open(); 
                do 
                { 
                    Write(textBox1.Text); 
                } 
                while (checkBox1.Checked == true); 
            } 
                
                serialPort1.Close(); 
--------------------编程问答-------------------- 你这种情况别用do ..while,因为serielPort1.Open这里可能会耗时,如果你这个代码在另一个线程,在Open的时候,checkbox被取消了Checked状态,那接下来的do..while会让Write至少执行一次,建议还是用While循环 --------------------编程问答-------------------- serialPort1.Open();
while (checkBox1.Checked == true)
            {
                serialPort1.Write(textBox1.Text);
                while (checkBox1.Checked == false);
            }
               serialPort1.Close();

这样调试,循环是死的,串口一直在发数,没办法改变checkbox1的值了 --------------------编程问答-------------------- 我是说“如果你这个代码在另一个线程” --------------------编程问答-------------------- 哥们你语法真的真的还很欠缺~~

serialPort1.Open();
while(checkBox1.Chekced){
    serialPort1.Write(textBox1.Text);
}
serialPort1.Close(); --------------------编程问答-------------------- 刚学,超级菜的问题。不好意思,让您笑话了 --------------------编程问答-------------------- 数是一直发出去

但是无法让他停止,还是没有解决。困惑中 --------------------编程问答-------------------- if (checkBox1.Checked == true) 
            { 
                serialPort1.Open(); 
                do 
                { 
                    Write(textBox1.Text); 
                } 
                while (1); 
            } 
--------------------编程问答--------------------
引用 9 楼 liulcster 的回复:
if (checkBox1.Checked == true) 
            { 
                serialPort1.Open(); 
                do 
                { 
                    Write(textBox1.Text); 
                } 
                while (1); 
            } 


这样不行了,while不能判断1的对错 --------------------编程问答-------------------- 如果你这个代码是写在CheckStateChanged(是不是这个名字不记得了)事件处理中,那肯定会一直阻塞,
建议用多线程,把这个代码放在另一个线程中,在CheckStateChanged事件的处理代码中启动线程(如果Checked则启动否则不处理),
当你鼠标点了CheckBox取消了选择状态后,线程会自己退出
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,