:!: โปรดทราบ Image
    1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ดครับ Image
    2. การสมัครสมาชิกเพื่อโพสต์คำถาม ดาวน์โหลดไฟล์แนบไปศึกษา ทำตามขั้นตอนด้านล่างครับ
      1. สมัครสมาชิก ดูขั้นตอนตาม Link นี้ครับ => สมัครสมาชิก กรณีลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่นี่ครับ => Reset รหัสผ่านImage
      2. Login เข้าระบบโดยคลิก Login ตรงมุมขวาบนของหน้านี้ Image กรณีมีปัญหาในการเข้าใช้งาน คลิก Link นี้เพื่อแจ้งผู้ดูแลระบบครับ => ติดต่อผู้ดูแลระบบ
    3. เมื่อ Login แล้วสามารถกำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษได้ที่ Link นี้ครับ => ตั้งค่าส่วนตัว Image
    4. วิธีการตั้งและตอบกระทู้ดูได้ที่ Link นี้ครับ => วิธีการตั้งและตอบกระทู้ Image
    5. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ Link นี้ครับ => จัดรูปแบบตัวอักษร และสามารถกำหนดขนาดตัวอักษรใน Browser ได้ที่นี่ครับ ==> กำหนดขนาดตัวอักษรใน Browser Image

สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

ฟอรัมถาม-ตอบเกี่ยวกับ Visual Basic
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถาม-ตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบ ต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. อธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. ควรแนบตัวอย่างไฟล์มาที่ฟอรั่มนี้เพื่อเพิ่มความสะดวกในการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่น นอกจากนี้ไม่ควรแนบไฟลที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. สำหรับคำถามเกี่ยวกับ VBA ให้ลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน ควรโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. แจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
cheapache
Member
Member
Posts: 67
Joined: Mon Sep 07, 2015 10:39 am

สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

#1

Postby cheapache » Tue Feb 09, 2016 9:08 pm

Code: Select all

    Public Sub btnTransfer_Click(sender As Object, e As EventArgs) Handles btnTransfer.Click

        If txtMaximumTank.Text <= txtVolumeWater.Text Then

            Dim result14 As DialogResult = MessageBox.Show("The capacity of the tank is less than that required to maintain the water level.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
            If txtMaximumTank.Text = "" Then
                Dim result As DialogResult = MessageBox.Show("Please you specify maximum capacity of tank.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            End If
        End If
        If txtVolumeWater.Text >= txtMaximumTank.Text Then
            Dim result15 As DialogResult = MessageBox.Show("The water level you specify exceeds tank capacity.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
            If txtVolumeWater.Text = "" Then
                Dim result1 As DialogResult = MessageBox.Show("Please you specify level water do you need maintain.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)

                ' result1.OK Then
                'txtVolumeWater.Text = (txtMaximumTank.Text - 2)
                'End If
            End If
        End If

        If txtCapacityA.Text = "" Then
            Dim result2 As DialogResult = MessageBox.Show("Please you speccify capacity of bottle fertilizer A.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtCapacityB.Text = "" Then
            Dim result3 As DialogResult = MessageBox.Show("Please you speccify capacity of bottle fertilizer B.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtFertilizerA.Text = "" Then
            Dim result4 As DialogResult = MessageBox.Show("Fertilizer A 2 CC. per liquid 1 liter.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtFertilizerB.Text = "" Then
            Dim result5 As DialogResult = MessageBox.Show("Fertilizer B 2 CC. per liquid 1 liter.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtTemp.Text = "" Then
            Dim result6 As DialogResult = MessageBox.Show("Please you specify temperature value of water (should not more than 35 °C.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtHumidity.Text = "" Then
            Dim result7 As DialogResult = MessageBox.Show("Please you specify Humidity value for control. (Should between value 40-60 %Rh.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtEc.Text = "" Then
            Dim result8 As DialogResult = MessageBox.Show("Please you specify EC value.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtEC2.Text = "" Then
            Dim result16 As DialogResult = MessageBox.Show("Please you specify EC value.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtEC3.Text = "" Then
            Dim result17 As DialogResult = MessageBox.Show("Please you specify EC value.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtEC4.Text = "" Then
            Dim result18 As DialogResult = MessageBox.Show("Please you specify EC value.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If


        If CheckBox1.Checked = True Then
            If txtpHMin.Text Or txtpHMax.Text = "" Then
                Dim result9 As DialogResult = MessageBox.Show("Please you specify pH value (The value should between 5.5 - 6.2)", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Question)
                'Exit Sub
            End If
        ElseIf CheckBox1.Checked = False Then
            Dim result13 As DialogResult = MessageBox.Show("pH function closed.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Question)
        End If

        If TextBox5.Text = "" Then
            Dim result10 As DialogResult = MessageBox.Show("Please you specify time of grow.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If TextBox3.Text = "" Then
            Dim result11 As DialogResult = MessageBox.Show("Please you specify time for delay before put fertilizer B.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtFlowwater.Text = "" Then
            Dim result12 As DialogResult = MessageBox.Show("Please you specify time for flow normal water", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        Dim variableTank As Integer = txtMaximumTank.Text
        Dim variableVolumeTank As Integer = txtVolumeWater.Text
        Dim capacityA As Integer = txtCapacityA.Text
        Dim capacityB As Integer = txtCapacityB.Text
        Dim variableTemp As Integer = txtTemp.Text
        Dim variableHumi As Integer = txtHumidity.Text
        Dim variableEC As Double = txtEc.Text
        Dim variableEC2 As Double = txtEC2.Text
        Dim variableEC3 As Double = txtEC3.Text
        Dim variableEC4 As Double = txtEC4.Text
        Dim variableA As Integer = txtFertilizerA.Text
        Dim variableB As Integer = txtFertilizerB.Text

        Dim variablepHMin As Double = (CDbl(txtpHMin.Text))
        Dim variablepHMax As Double = (CDbl(txtpHMax.Text))

        Dim variablephMin2 As Double = 1.0
        Dim variablephMax2 As Double = 1.0

        Dim variableDay As Integer = TextBox5.Text
        Dim variableMin As Integer = TextBox3.Text
        Dim variableFlow As Integer = txtFlowwater.Text

        PumpFlow = 2
        ValveFeedin = 2
        ValveFeedout = 2
        PumpA = 2
        PumpB = 2
        ValveFogger = 2


        If CheckBox1.Checked = True Then
            data = ("" & variableTank & "" & variableVolumeTank & "" & capacityA & "" & capacityB & "" & variableA & "" & variableB & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & (variableEC2 * 10) & "" & (variableEC3 * 10) & "" & (variableEC4 * 10) & "" & (variablepHMin * 10) & "" & (variablepHMax * 10) & "" & variableDay & "" & variableMin & "" & variableFlow & "" & PumpFlow & "" & ValveFeedin & "" & ValveFeedout & "" & PumpA & "" & PumpB & "" & ValveFogger & "\")
        ElseIf CheckBox1.Checked = False Then
            data = ("" & variableTank & "" & variableVolumeTank & "" & capacityA & "" & capacityB & "" & variableA & "" & variableB & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & (variableEC2 * 10) & "" & (variableEC3 * 10) & "" & (variableEC4 * 10) & "" & (variablephMin2 * 10) & "" & (variablephMax2 * 10) & "" & variableDay & "" & variableMin & "" & variableFlow & "" & PumpFlow & "" & ValveFeedin & "" & ValveFeedout & "" & PumpA & "" & PumpB & "" & ValveFogger & "\")
        End If


        ListBox1.Items.Add(data)

        'SerialPort1.PortName = comport
        'SerialPort1.BaudRate = baudrate
        'SerialPort1.Open()
        'If SerialPort1.IsOpen Then
        'SerialPort1.WriteLine(data)
        'SerialPort1.Close()
        'End If
    End Sub


ด้านบนนี้เป็นโค๊ดที่ใช้งานได้ปกติครับ แต่ถ้าหากไม่กดปุ่มนี้ก่อน แล้วไปกดปุ่มอื่นที่มีคำสั่งเหมือนกัน โปรแกรมจะแจ้งว่า ให้ Convert from string to integer

Code: Select all

 Dim variableTank As Integer = (CInt(txtMaximumTank.Text))
        Dim variableVolumeTank As Integer = txtVolumeWater.Text
        Dim capacityA As Integer = txtCapacityA.Text
        Dim capacityB As Integer = txtCapacityB.Text
        Dim variableTemp As Integer = txtTemp.Text
        Dim variableHumi As Integer = txtHumidity.Text
        Dim variableEC As Double = txtEc.Text
        Dim variableEC2 As Double = txtEC2.Text
        Dim variableEC3 As Double = txtEC3.Text
        Dim variableEC4 As Double = txtEC4.Text
        Dim variableA As Integer = txtFertilizerA.Text
        Dim variableB As Integer = txtFertilizerB.Text

        Dim variablepHMin As Double = (CDbl(txtpHMin.Text))
        Dim variablepHMax As Double = (CDbl(txtpHMax.Text))

        Dim variablephMin2 As Double = 1.0
        Dim variablephMax2 As Double = 1.0

        Dim variableDay As Integer = TextBox5.Text
        Dim variableMin As Integer = TextBox3.Text
        Dim variableFlow As Integer = txtFlowwater.Text


        PumpFlow = 0


        'data = ("" & variableTank & "" & variableVolumeTank & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & variableA & "" & variableB & "" & variableDay & "" & variableMin & "" & (variablepHMin * 10) & "" & (variablepHMax * 10) & "\")
        If CheckBox1.Checked = True Then
            data = ("" & variableTank & "" & variableVolumeTank & "" & capacityA & "" & capacityB & "" & variableA & "" & variableB & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & (variableEC2 * 10) & "" & (variableEC3 * 10) & "" & (variableEC4 * 10) & "" & (variablepHMin * 10) & "" & (variablepHMax * 10) & "" & variableDay & "" & variableMin & "" & variableFlow & "" & PumpFlow & "" & ValveFeedin & "" & ValveFeedout & "" & PumpA & "" & PumpB & "" & ValveFogger & "\")
        ElseIf CheckBox1.Checked = False Then
            data = ("" & variableTank & "" & variableVolumeTank & "" & capacityA & "" & capacityB & "" & variableA & "" & variableB & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & (variableEC2 * 10) & "" & (variableEC3 * 10) & "" & (variableEC4 * 10) & "" & (variablephMin2 * 10) & "" & (variablephMax2 * 10) & "" & variableDay & "" & variableMin & "" & variableFlow & "" & PumpFlow & "" & ValveFeedin & "" & ValveFeedout & "" & PumpA & "" & PumpB & "" & ValveFogger & "\")
        End If

        'data1 = ("" & txtMaximumTank.Text & "\")
        ListBox1.Items.Add(data)

        'SerialPort1.PortName = comport
        'SerialPort1.BaudRate = baudrate
        'SerialPort1.Open()
        'If SerialPort1.IsOpen Then
        'SerialPort1.WriteLine(data)
        'SerialPort1.Close()
        'End If
    End Sub


ผมลองใส่ CInt ตรงที่โปรแกรมแจ้ง error แล้วครับ แต่ก็ยังไม่หาย ไม่ทราบว่าเกิดจากอะไรครับ รบกวนอาจารย์ด้วยครับ

User avatar
snasui
Site Admin
Site Admin
Posts: 21783
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

#2

Postby snasui » Tue Feb 09, 2016 9:33 pm

:D ลอง Run ทีละ Step แล้วสังเกตว่าติดตรงบรรทัดใดครับ

User avatar
cheapache
Member
Member
Posts: 67
Joined: Mon Sep 07, 2015 10:39 am

Re: สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

#3

Postby cheapache » Tue Feb 09, 2016 10:00 pm

ลองรันทีละ step ดูแล้วครับ พอชี้ที่ ตัวแปร txtMaximumtank.text มันขึ้นว่ายังเป็น "" อยู่หมายถึงไม่มีค่าตัวแปร

แต่เมื่อลองเอา msgbox(txtMaximumtank.text) เช็คตอนฟอร์มโหลด มันขึ้น 12 ครับ แต่ทำไมตอนกดปุ่ม ค่าใน txtMaximumtank.txt ในตอนแรกถึงยังเป็น "" เพราะเมื่อเปิดฟอร์มใหม่ขึ้นมา ผมเขียนให้ข้อมูลที่อยู่ใน textbox.text ทุกตัว ถูกเก็บไว้ใน My.Setting()

User avatar
snasui
Site Admin
Site Admin
Posts: 21783
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

#4

Postby snasui » Tue Feb 09, 2016 10:08 pm

:D เช็คตอน Form Load แล้วได้ค่านั้นแสดงว่ามันต้องมีค่าอยู่ใน ตัวแปร txtMaximumtank อยู่ก่อนที่จะคลิกปุ่มอื่น

หากเป็นเช่นนี้ Code ไม่ควร Error ยกเว้นปิด Form นั้นไปแล้วค่าจึงจะถูกลบออกจาก Memory ครับ


Return to “VB.NET”

Who is online

Users browsing this forum: No registered users and 1 guest