Το παράδειγμα αυτό προέκυψε από ένα ερώτημα σε αυτό το άρθρο .
Ο έλεγχος ColorDialog παρουσιάζει μια παραδοσιακή παλέτα χρωμάτων, αλλά η αλήθεια είναι ότι το Visual Studio είναι πολύ καλύτερο και δείχνει όλα τα χρώματα από το όνομα, όπως ορίζεται στα σχεδίου συστημάτων ιδιότητες του αντικειμένου.
Δεδομένου ότι το πρόβλημα δεν υπάρχει κανένας έλεγχος για να μας δείξει αυτή τη λίστα των χρωμάτων μπορούμε να δούμε πώς μπορούμε να constriur τους εαυτούς μας έναν.
Για παράδειγμα, χρειαζόμαστε ένα νέο έργο και δύο μορφές.
Στην πρώτη μορφή ενός σκυτάλη ακριβώς πρέπει να καλέσετε το έντυπο αριθ. 2, όπως φαίνεται στο παρακάτω σχήμα:

κουμπί και ο κώδικας έχει ως εξής:
BtnColor_Click Private Sub (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές btnColor.Click Όπως Νέα Form2 Δημ. vForm2 vForm2.ShowDialog () Sub End
και σε αυτή τη μορφή θα n botoes λίστας και δύο (δέχεται και να ακυρώσει), όπως στην παρακάτω φόρμα:

Σε περίπτωση φόρτωσης της φόρμας θεσπίσει ορισμένες ιδιότητες της λίστας και να φέρουν τα ονόματα των χρωμάτων με τον ακόλουθο κώδικα:
Form2_Load Private Sub (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές MyBase.Load ListBox1.DrawMode = DrawMode.OwnerDrawFixed ListBox1.ItemHeight = 20 ListBox1.Items.Clear () ListBox1.BeginUpdate () Για κάθε π Όπως Reflection.PropertyInfo Σε gettype (Χρώμα). GetProperties (Ή Reflection.BindingFlags.Static Reflection.BindingFlags.Public) ListBox1.Items.Add (pi.Name) Επόμενη ListBox1.EndUpdate () Sub End
Στην πρώτη γραμμή του φορτίου "ListBox1.DrawMode = DrawMode.OwnerDrawFixed" να αποδείξει ότι όλα τα στοιχεία του ελέγχου που το χέρι και να έχουν το ίδιο ύψος. Αυτό ademças, DrawItem γεγονός προκαλεί μια παράσταση λίγο πριν από κάθε στοιχείο.
Για να ρυθμίσετε την DrawItem περίπτωση λίστας, επιλέξτε (σε προβολή σχεδίασης) η ListBox1, πατάμε το πλήκτρο F4 για να δείτε τις ιδιότητες, και το επάνω μέρος του πλαισίου Ιδιότητες επιλέξτε την αστραπή για να δείτε την περίπτωση κατά την οποία ο έλεγχος είναι διαθέσιμη , έχουμε και εμείς DrawItem διπλό κλικ. Η παρακάτω εικόνα δείχνει πώς:

και αυτό είναι ο κωδικός της εκδήλωσης DrawItem
ListBox1_DrawItem Private Sub (ByVal αποστολέα ως αντικείμενο, ByVal e Όσον System.Windows.Forms.DrawItemEventArgs) Λαβές ListBox1.DrawItem Δημ. ορθογώνιο Όπως e.Bounds ορθογώνιο = Αν (e.State Και DrawItemState.Selected) Στη συνέχεια, e.Graphics.FillRectangle (SystemBrushes.Highlight, ορθογώνιο) Αλλού e.Graphics.FillRectangle (Brushes.White, ορθογώνιο) End If Δημ. As String = ListBox1.Items nombreColor (e.Index) Δημ. β Όπως Νέα SolidBrush (Color.FromName (nombreColor)) rectangulo.Inflate (-16, -2) e.Graphics.FillRectangle (β, Νέα ορθογώνιο (rectangulo.X, rectangulo.Y, 30, rectangulo.Height)) e.Graphics.DrawRectangle (Pens.Black, Νέα ορθογώνιο (rectangulo.X, rectangulo.Y, 30, rectangulo.Height)) Αν (e.State Και DrawItemState.Selected) Στη συνέχεια, e.Graphics.DrawString (nombreColor, e.Font, Brushes.White, rectangulo.X + 34, rectangulo.Y + 2) Αλλού e.Graphics.DrawString (nombreColor, e.Font, Brushes.Black, rectangulo.X + 34, rectangulo.Y + 2) End If Sub End
Τώρα απλά πρέπει να προγραμματίσετε τα κουμπιά eventosde όπως φαίνεται στον παρακάτω κώδικα:
BtnAceptar_Click Private Sub (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές btnAceptar.Click My.Forms.Form1.BackColor = Color.FromName (ListBox1.SelectedItem) Sub End BtnCancelar_Click Private Sub (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές btnCancelar.Click Me.Close () Sub End
Λοιπόν, για να δοκιμάσετε την εφαρμογή ... αν όλα πήγαν καλά, μοιάζει με αυτό:

Αφήνω κάποιους ορισμούς:
Graphics.FillRectangle (Μέθοδος): γεμίζει το εσωτερικό του ορθογωνίου που ορίζεται από ένα ζεύγος συντεταγμένων, πλάτος και ύψος.
Graphics.DrawRectangle (Μέθοδος): Σχεδιάστε ένα ορθογώνιο που ορίζεται από ένα ζεύγος συντεταγμένων, πλάτος και ύψος.
Graphics.DrawString (Μέθοδος): Σχεδιάστε την καθορισμένη συμβολοσειρά κειμένου στη συγκεκριμένη θέση και με το πινέλο και καθορίζονται τα αντικείμενα γραμματοσειράς.
Η ελπίδα αυτό βοηθά και μπορείτε να χρησιμοποιήσετε στα έργα σας.
Πληροφορίες Bitacoras.com ...
Τιμή στο Bitacoras.com: Αυτό το παράδειγμα προέκυψε από ένα ερώτημα σε αυτό το άρθρο. Ο έλεγχος ColorDialog tresenta μας μια παραδοσιακή παλέτα χρωμάτων, αλλά είναι tru ε ότι του Visual Studio είναι πολύ καλύτερο και δείχνει όλα τα χρώματα για ν σας .....
Πολύ καλό παράδειγμα, σας ευχαριστώ.
ΜΕΓΑΛΗ!
Είναι ευγνώμονες!
! Πολύ καλό!
το μόνο πράγμα που δούλεψα ήταν το κουμπί ακύρωσης.
haha, ξέχασα, αλλά ο κώδικας είναι πολύ απλό: Me.Close
αποτυγχάνει να επιλέξετε το διαφανές χρώμα, θα είναι; ........... τα άλλα χρώματα αν λειτουργεί
salu2
είναι ότι το διαφανές χρώμα δεν μπορεί να εφαρμοστεί όπως το χρώμα του φόντου της φόρμας, αλλά εάν εφαρμοστεί σε άλλους ελέγχους.
Ευχαριστώ για το σχολιασμό!
έσωσε τη ζωή μου αυτό το παράδειγμα! ... αλλά έχω να δω την οθόνη prpiedades στο οποίο μπορείτε να αλλάξετε το χρώμα; γιατί μου επιτρέπει να δείτε "My.Forms.Form1.BackColor." ευχαριστεί salu2
γειά σου
Παίρνω ένα λάθος Αναμενόμενη αναγνωριστικό ακριβώς. <Μια Αν (e.State Και DrawItemState. Επιλέξτε ED) Στη συνέχεια,
e.Graphics.FillRectangle (SystemBrushes.Highlight, ορθογώνιο)
ΒΟΗΘΗΣΤΕ ΜΕ ΑΠΟ FA
Graciass
Χαιρετισμοί ...
Ψάχνω για τεχνικές για να κάνει ένα καλύτερο σχεδιασμό των ελέγχων που πρέπει να είναι, όπως το αεροδρόμιο, αλλά δεν έχω ιδέα ούτε μπορώ να βρω κάτι παρακαλώ αν μπορούσε να με βοηθήσει με αυτό της anetmano σας ευχαριστώ πολύ ...
ΒΕΡΑ αυτό, σας ευχαριστώ πολύ για αυτό το παράδειγμα. Θα είμαι σε θέση να την εφαρμόσει στις ανάγκες μου
Σας ευχαριστώ από Merida, Yucatan