Page 1 of 1

สอบถามเรื่อง vb.net button ไม่แสดงผลตามเงื่อนไขที่กำหนด

Posted: Wed Oct 21, 2015 4:38 pm
by cheapache
สวัสดีครับอาจารย์

ผมเขียนโค๊ดให้ button เปลี่ยนสี เมื่อเงื่อนไขเป็นไปตามที่กำหนด
เมื่อ form load โปรแกรมจะจำค่าแรกที่ได้รับและแสดงสีนั้นและค้างการทำงาน ทั้งๆที่ค่าที่กำหนดเปลี่ยนไปแล้วแต่สีที่ button ไม่เปลี่ยนตาม
ตัวอย่างโค๊ด ในสภาวะปกติ(ไม่มีค่าตัวแปรที่รับมา button จะเป็นสีแดง)

Code: Select all

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick  
  If t >= Form1.Mint And t <= Form1.Maxt And h >= Form1.Minh And h <= Form1.Maxh = True Then

            Temp_Cal_Rm_F2.BackColor = Color.RoyalBlue
            PictureBox2.BackColor = Color.RoyalBlue
            PictureBox3.BackColor = Color.RoyalBlue

            ' If t < Form1.Mint And t > Form1.Maxt Or h < Form1.Minh And h > Form1.Maxh Then

            'Temp_Cal_Rm_F2.BackColor = Color.Maroon
            'PictureBox2.BackColor = Color.Maroon
            'PictureBox3.BackColor = Color.Maroon

        End If
        Application.DoEvents()
        System.Threading.Thread.Sleep(1000)
        MyBase.Refresh()
End Sub
ผมลอง ปิดแล้วเปิดๆ ในทันทีสีมันก็จะแสดงตามเงื่อนไขที่กำหนดครับ แต่มันแสดงแค่ค่าแรกที่ได้รับตอน form load
ผมคิดว่า อาจจะต้องเขียนคำสั่งที่ทำให้ form load อยู่ตลอดเวลา ผมลองใช้ Application.DoEvents() กับ MyBase.Refresh() แต่ก็ยังเป็นปัญหาเหมือนเดิมครับ

อยากทราบว่า ทำอย่างไร button จึงจะแสดงผลตามเงื่อนไขที่กำหนด
ขอบคุณครับ :roll:

Re: สอบถามเรื่อง vb.net button ไม่แสดงผลตามเงื่อนไขที่กำหนด

Posted: Sat Oct 24, 2015 6:22 pm
by snasui
:D ผมเข้าใจว่าการเปลี่ยนสีจะเกิดเมื่อเกิด Event Tick ของ Timer1_Tick แต่การให้สีจะขึ้นกับเงื่อนไข If t >= Form1.Mint And t <= Form1.Maxt And h >= Form1.Minh And h <= Form1.Maxh = True ในเบื้องต้นลองตรวจสอบว่าเข้าเงื่อนนี้หรือไม่ครับ

Re: สอบถามเรื่อง vb.net button ไม่แสดงผลตามเงื่อนไขที่กำหนด

Posted: Mon Oct 26, 2015 4:27 pm
by cheapache
กำหนดให้ Form1.Maxt = 26.00,Form1.Mint = 20.00,Form1.Maxh = 70,Form1.Minh = 40
อธิบายคำสั่งตามเงื่อนไขคือ ถ้า t มากกว่าหรือเท่ากับ 20.00 และ t น้อยกว่าหรือเท่ากับ 26.00 และ h ,มากกว่าหรือเท่ากับ 40 และ h น้อยกว่าหรือเท่ากับ 70 ให้เปลี่ยนสี
นั้นหมายความว่า เงื่อนไขเหล่านี้ต้องเป็นจริงทั้งหมด ช่วงที่เงื่อนไขทำงานคือที่ t อยู่ในช่วง 20.00 - 26.00 และ h อยู่ในช่วง 40 - 70

ผมลอง Sim ดูแล้วครับให้ค่ามันเกินช่วง Max,Min ถ้าเปิดมาในครั้งแรกมีสีอะไรอยู่ในขณะนั้น มันก็จะค้างอยู่ที่สีนั้นโดยไม่มีการเปลี่ยนแปลง ถ้าไม่กดปิดแล้วเปิดขึ้นมาใหม่สีก็ยังคงเดิมครับ

Re: สอบถามเรื่อง vb.net button ไม่แสดงผลตามเงื่อนไขที่กำหนด

Posted: Mon Oct 26, 2015 9:41 pm
by snasui
:D แล้วที่ทำอยู่นั้นเงื่อนไขเป็นจริงทั้งหมดหรือไม่ครับ หากไม่เป็นจริงทั้งหมดก็ไม่แปลกที่จะไม่เปลี่ยนสีครับ

Re: สอบถามเรื่อง vb.net button ไม่แสดงผลตามเงื่อนไขที่กำหนด

Posted: Mon Oct 26, 2015 10:44 pm
by cheapache
มีเป็นจริงทั้งหมดด้วย และไม่เป็นจริงเฉพาะ t และ ทั้ง t และ h เลยครับ
(button ค้างอยู่ที่สีเดิม)

Re: สอบถามเรื่อง vb.net button ไม่แสดงผลตามเงื่อนไขที่กำหนด

Posted: Tue Oct 27, 2015 5:53 am
by snasui
:D ลองแนบ Project เฉพาะส่วนที่เป็นปัญหามาดูกันครับ

Re: สอบถามเรื่อง vb.net button ไม่แสดงผลตามเงื่อนไขที่กำหนด

Posted: Tue Nov 03, 2015 10:58 pm
by cheapache
ตามภาพนะครับ form ที่ button เป็นสีแดงผมนำ label มาแสดงค่าที่รับมาจากที่เดียวกันกับอีก form
จะเห็นได้ว่า form ที่ button เป็นสีแดง ไม่ตอบสนองค่าที่เปลี่ยนไป

ผมลองไปเขียนจำลอง โค๊ดเหมือนกัน แต่ใช้อินพุตจาก textfile การทำงานเป็นไปตามเงื่อนไขครับ

Re: สอบถามเรื่อง vb.net button ไม่แสดงผลตามเงื่อนไขที่กำหนด

Posted: Wed Nov 04, 2015 1:45 pm
by cheapache
ทำแก้ไขแล้วครับ ทำงานได้ตามเงื่อนไขเป็นปกติ

ขอโทษครับ ผมสะเพร่าเอง ไม่ได้ประกาศตัวแปรให้ดึงค่า(t = form1.Temp) ใน Event ของ Timer