rafinos Δημοσ. 6 Ιουλίου 2013 Δημοσ. 6 Ιουλίου 2013 Γεια σας παιδιά! Δοκίμασα να φτιάξω ένα δικό μου κουμπί στη visual basic και εν μέρη τα κατάφερα με τη βοήθεια ενός video. Το πρόβλημα μου είναι ότι όταν φορτώνω εξ αρχή τη φόρμα και το κουμπί το έχω enable=false παίζει μια χαρά... ενώ αν κατα τη διάρκεια λειτουργίας του προγράμματος το κάνω από enable = true σε enable = false μέσω κάποιας διαδικασίας τότε... ναι μεν γίνεται disable το κουμπί αλλά συνεχίζει να μου δίχνει ακριβώς το ίδιο κουμπί και μου μαυρίζει το κείμενο του... και δεν μου αλλάζει την εικόνα του κουμπιού ξέρει κανείς μήπως τι μπορεί να φταίει ο κώδικας του κουμπιού Public Class next_button Inherits Windows.Forms.Button Public Sub New() Me.Size = New System.Drawing.Point(100, 25) Me.FlatStyle = Windows.Forms.FlatStyle.Flat Me.BackgroundImage = My.Resources.Forward_Arrow Me.BackgroundImageLayout = Windows.Forms.ImageLayout.Stretch Me.BackColor = Drawing.Color.Transparent Me.Font = New System.Drawing.Font("Tahoma", 9.01, Drawing.FontStyle.Regular, Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.ForeColor = Drawing.Color.White Me.FlatAppearance.BorderColor = Drawing.Color.Gray Me.FlatAppearance.MouseDownBackColor = Drawing.Color.Transparent Me.FlatAppearance.MouseOverBackColor = Drawing.Color.Transparent Me.FlatAppearance.BorderSize = 0 End Sub Private Sub next_button_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.EnabledChanged If Me.Enabled = False Then Me.BackgroundImage = My.Resources.Forward_Arrow_disable Else Me.BackgroundImage = My.Resources.Forward_Arrow End If End Sub Private Sub next_button_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown Me.BackgroundImage = My.Resources.Forward_Arrow_clicked End Sub Private Sub next_button_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseEnter Me.BackgroundImage = My.Resources.Forward_Arrow_hover End Sub Private Sub next_button_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeave Me.BackgroundImage = My.Resources.Forward_Arrow End Sub Private Sub next_button_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp Me.BackgroundImage = My.Resources.Forward_Arrow_hover End Sub End Class
NikosKallithea Δημοσ. 6 Ιουλίου 2013 Δημοσ. 6 Ιουλίου 2013 Θα μου επιτρέψεις να κανω μια παρέμβαση Ποιος ο λόγος να σπαταλας τις ώρες σου σε τέτοιου είδους κώδικα Κάνε κάτι πιο δημιουργικό 1
παπι Δημοσ. 6 Ιουλίου 2013 Δημοσ. 6 Ιουλίου 2013 Ε οχι και σπαταλη χρονου το subclassing σε controls.
rafinos Δημοσ. 7 Ιουλίου 2013 Μέλος Δημοσ. 7 Ιουλίου 2013 Παιδιά βοηθάω ένα φιλαράκι μου που είναι σκράπας... αν ήταν να κάτσω να ασχοληθώ με visual studio... θα ασχολιόμουν με c# και όχι με basic... αλλά τι να κάνουμε... αλλά ρε παιδιά καμιά βοήθεια;;;;
Apoll Δημοσ. 7 Ιουλίου 2013 Δημοσ. 7 Ιουλίου 2013 Παιδιά βοηθάω ένα φιλαράκι μου που είναι σκράπας... αν ήταν να κάτσω να ασχοληθώ με visual studio... θα ασχολιόμουν με c# και όχι με basic... αλλά τι να κάνουμε... αλλά ρε παιδιά καμιά βοήθεια;;;; Αφού εσύ δεν ξέρεις ούτε VB ούτε C#, τί διδάσκεις τον άλλον τότε; Για να τον στραβώσεις περισσότερο; Γιατί με αυτό που έγραψες στο 1ο post, αυτό κάνεις.
albNik Δημοσ. 7 Ιουλίου 2013 Δημοσ. 7 Ιουλίου 2013 Αλλαξε και τις 5 συναρτησεις με τις αντιστοιχες override Αν δεν φτιάξει τότε κατι κάνεις λάθος στον κώδικα στη φόρμα. Protected Overrides Sub OnEnabledChanged(ByVal e As System.EventArgs) MyBase.OnEnabledChanged(e) If Me.Enabled = False Then Me.BackgroundImage = My.Resources.Forward_Arrow_disable Else Me.BackgroundImage = My.Resources.Forward_Arrow End If End Sub Edit Το ιδιο ειναι , δειξε μας τον κώδικα στην φορμα που το χρησιμοποιεις.
rafinos Δημοσ. 7 Ιουλίου 2013 Μέλος Δημοσ. 7 Ιουλίου 2013 Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click RadioButton1.Checked = False RadioButton2.Checked = False RadioButton3.Checked = False RadioButton4.Checked = False questIndex = questIndex + 1 PictureBox1.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & ".jpg") PictureBox2.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & "_" & ansArray(questIndex, 0).ToString & ".jpg") PictureBox3.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & "_" & ansArray(questIndex, 1).ToString & ".jpg") PictureBox4.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & "_" & ansArray(questIndex, 2).ToString & ".jpg") PictureBox5.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & "_" & ansArray(questIndex, 3).ToString & ".jpg") question.Text = (questIndex + 1).ToString answer = questIndex If questIndex = 1 Then btnPrev.Enabled = True End If If questIndex = 3 Then btnNext.Enabled = False End If End Sub Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click RadioButton1.Checked = False RadioButton2.Checked = False RadioButton3.Checked = False RadioButton4.Checked = False questIndex = questIndex - 1 PictureBox1.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & ".jpg") PictureBox2.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & "_" & ansArray(questIndex, 0).ToString & ".jpg") PictureBox3.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & "_" & ansArray(questIndex, 1).ToString & ".jpg") PictureBox4.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & "_" & ansArray(questIndex, 2).ToString & ".jpg") PictureBox5.Image = Image.FromFile(parent_folder & "\images\" & folder & "\" & questArray(questIndex) & "\" & questArray(questIndex) & "_" & ansArray(questIndex, 3).ToString & ".jpg") question.Text = (questIndex + 1).ToString answer = questIndex If questIndex = 0 Then btnPrev.Enabled = False btnNext.Enabled = True End If If questIndex = 2 Then btnNext.Enabled = True End If End Sub Με τα κανονικά buttons της visual basic δουλεύει κανονικότατα (σκεφτείτε ότι πριν τρέξω αυτά τα κουμπιά στο load τις φόρμας υπάρχει εντολή btnPrev.Enabled=false και μου δίχνει το κουμπί μια χαρα απενεργοποιημένο... όμως μόλις ξανααλλάξει σε false η τιμή τίποτα
albNik Δημοσ. 7 Ιουλίου 2013 Δημοσ. 7 Ιουλίου 2013 Βαλε ένα checkBox στη φορμα και handle αυτο το event Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged btn_Next.Enabled = CheckBox1.Checked End Sub Ειναι ΟΚ οταν τσεκάρεις/ ξετσεκαρεις το check? Γενικά αν ειναι ήδη το κουμπι enabled και γραψεις button.enabled=true ΔΕΝ κανει fire το event (το ιδιο και για false). Γιαυτο κανε πανω απο 2-3 εναλλαγες στο checkbox
rafinos Δημοσ. 7 Ιουλίου 2013 Μέλος Δημοσ. 7 Ιουλίου 2013 Βαλε ένα checkBox στη φορμα και handle αυτο το event Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged btn_Next.Enabled = CheckBox1.Checked End Sub Ειναι ΟΚ οταν τσεκάρεις/ ξετσεκαρεις το check? Γενικά αν ειναι ήδη το κουμπι enabled και γραψεις button.enabled=true ΔΕΝ κανει fire το event (το ιδιο και για false). Γιαυτο κανε πανω απο 2-3 εναλλαγες στο checkbox Με το checkbox όντως δουλεύει... αλλά και την τιμή του checkbox να πειράζο αντί για το enable... πάλι το ίδιο συμβαίνει πρέπει να κάνω κλικ με το ποντίκη για να δουλέψει
albNik Δημοσ. 7 Ιουλίου 2013 Δημοσ. 7 Ιουλίου 2013 Με το checkbox όντως δουλεύει... αλλά και την τιμή του checkbox να πειράζο αντί για το enable... πάλι το ίδιο συμβαίνει πρέπει να κάνω κλικ με το ποντίκη για να δουλέψει Δλδ αν τσεκάρεις/ξετσεκαρεις μεσω κώδικα (και όχι με το ποντικι) δεν δουλευει? Δεν γινονται αυτά. Πως "πειραζεις την τιμη του checkbox"? Εχεις μπερδεψει λίγο την λογική του wizard, τις αρχικές καταστασεις κουμπιων και background images. Αν ειναι λαθος από το wizard λαθος θα ειναι και μεσω Λαμίας (checkbox).
rafinos Δημοσ. 7 Ιουλίου 2013 Μέλος Δημοσ. 7 Ιουλίου 2013 μέσα σε κάποιο κουμπί έχω κατι τέτοιο checkbox.checked = "false" ή true αντίστοιχα... πως μπορώ να το κάνω διαφορετικά;;;;
albNik Δημοσ. 7 Ιουλίου 2013 Δημοσ. 7 Ιουλίου 2013 Βαλε breakpoint σαυτη τη γραμμη και κοιτα με debug αν τρέχει ποτε. Μετα πατα F11 πρεπει να σε παει στον κωδικα με το Enabled , πατα ξανα F11...
rafinos Δημοσ. 7 Ιουλίου 2013 Μέλος Δημοσ. 7 Ιουλίου 2013 Ναι τρέχει... το θέμα δεν είναι ότι δεν το κάνει disable... είναι ότι δεν κάνει αισθητικά αυτό που πρέπει... κοίτα παρακάτω η πρώτη φόρμα είναι disable μεσω του checkbox kai η τρίτη disable μέσω αλλαγής της τιμής του checkbox με κώδικα
albNik Δημοσ. 7 Ιουλίου 2013 Δημοσ. 7 Ιουλίου 2013 Ναι τρέχει... το θέμα δεν είναι ότι δεν το κάνει disable... είναι ότι δεν κάνει αισθητικά αυτό που πρέπει... κοίτα παρακάτω η πρώτη φόρμα είναι disable μεσω του checkbox kai η τρίτη disable μέσω αλλαγής της τιμής του checkbox με κώδικα Δοκίμασε με αυτον τον κωδικα. Προσθετεις ενα αλλο button και στο click του αλλαζεις το checkBox που με τη σειρα του αλλαζει το Enabled/Disabled Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click CheckBox1.Checked = Not CheckBox1.Checked End Sub
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα