Wise_One Δημοσ. 7 Δεκεμβρίου 2008 Δημοσ. 7 Δεκεμβρίου 2008 Δε μπορούσα να βάλω στον τίτλο αυτό ακριβώς που θέλω να κάνω. Δεν είναι και πολύ κατατοπιστικός. Εξηγούμαι. Φτιάχνω τη φόρμα μου. Θέλω κάθε φορά που τρέχω το πρόγραμμα, να γίνονται κάποιες default ενέργειες όπως "String[] letters;" και "Random generator = new Random();". Όταν κλικάρω ένα κουμπί, θέλω να δημιουργείται ένα αντικείμενο όπως "letters = String[62]" ή "letters = String[72]" σύμφωνα μ' ένα checkbox που θα έχω. Κάθε φορά και διαφορετικό αντικείμενο. Αν βάλω αυτά που θέλω να γίνονται με κάθε εκτέλεση του προγράμματος, στη μέθοδο >public Form1() { InitializeComponent(); } κάτω απ' την Initialize... θα δουλέψει;
xabikos Δημοσ. 7 Δεκεμβρίου 2008 Δημοσ. 7 Δεκεμβρίου 2008 Δεν ξεκαθαρίζεις ακριβώς που θέλεις να αρχικοποιείς τον πίνακά σου. Αν θέλεις να συμβαίνει αυτό με το που δημιουργείται η φόρμα τότε ναι μπορείς να το κάνεις μέσα στον constructor. Αν πάλι θέλεις να γίνεται η αρχικοποίηση όταν πατάς ένα κουμπί τότε αυτό θα το κάνεις στο ανάλογο event.
macabre_sunsets Δημοσ. 7 Δεκεμβρίου 2008 Δημοσ. 7 Δεκεμβρίου 2008 Γιατι δεν το βάζεις στο OnLoad της φόρμας?
Evgenios1 Δημοσ. 7 Δεκεμβρίου 2008 Δημοσ. 7 Δεκεμβρίου 2008 Λοιπον, εαν θες στο πατιμα ενος κουμπιου να σου πεταγετε ενα νεο παραθιρο με ενα τιτλο που να γραφει κατι(αυτο καταλαβα)θα κανεις τα παρακατο: forms πατοντας διπλο κλικ στο κουμι (στο designer) σου πεταει κατι παρομιο > private void button1_Click(object sender,EventArgs e) { } σε αυτο θα βαλεις > private void button1_Click(object sender,EventArgs e) { Form f = new Form{ Text = "εδω βαζεις το κειμενο" }; f.Show(); } WPF > private void button1_Click(object sender,RounatEvent e) { Window w = new Window{ Title= "εδω βαζεις το κειμενο" }; w.Show(); } Εαν θες περισοτερες αλαγες χωρης να φτιαχνεις partial classes > Form f =new Form { Title="title", Height=400, Weight=400, Background=Colors.Black, etc.... }; Το InitializeComponent(); δεν ειναι method της κλασης Form αλλα ειναι μια method η οποια φτιαχνετε απο το designer σε ενα αλλο αρχειο (*.designer.cs) το οποιο αρχειο περιεχει ενα κοματι της form1 class (αυτη που δουλεβεις) για αυτο και σου λεει public partial class form1: Form , και στο αρχειο (*.designer.cs) σου εχει ενα κοματι public partial class form1 που περιεχει τη InitializeComponent(){} \ Εαν θες να βαλεις κατι extra που δεν εχει ο designer και χωρης να διμιουργισεις προβλημα στο degner (βαζοντας πραματα στη InitializeComponent) ή δε θελεις να γεμησεις τη κυρια class , κανε μια αλη patrial (public patrial class form1 {}) και φτιαξε μια iniz method που να περιεχει αυτα που θελεις , και μετα καλεσε την κατω απο τη InitializeComponent();
Wise_One Δημοσ. 7 Δεκεμβρίου 2008 Μέλος Δημοσ. 7 Δεκεμβρίου 2008 Καταρχήν σας ευχαριστώ πολύ για τον κόπο που κάνατε. Αλλά νομίζω ότι σας μπέρδεψα. Θα προσπαθήσω να το εξηγήσω καλύτερα. Φτιάχνω το πρόγραμμα ΟΚ; Όταν το τρέχω (και χωρίς να πατήσω κάποιο κουμπί) θέλω να δημιουργούνται κάποια αντικείμενα. Ένας πίνακας κι ένας Random generator. Αν πατήσω τώρα κάποιο κουμπί, αυτά τα αντικείμενα θα φτιάχνουν κάτι. Δείτε λίγο τον κώδικα που έφτιαξα: > private void generatePasswordButton_Click(object sender, EventArgs e) { char[] letters = createLettersArray(); //Fetches the password length from the combo box int passLength = int.Parse(passwordLengthComboBox.Text); //Fetches the value of the special characters checkbox //By default it's set to 62, no special characters int specialChars = 62; //TODO: Stringbuilder() string password = createPassword(passLength, specialChars, letters); //Shows the password to the appropriate text box passwordTextBox.Text = password; } //Creates the letters[] and returns it to an object as a constructor private char[] createLettersArray(){...} //Stores each lower case alphabet character into the array private static void insertLower(char[] array){...} //Stores each upper case alphabet character into the array private static void insertUpper(char[] array){...} //Stores each numerical character [0-9] into the array private static void insertNum(char[] array){...} //Inserting special characters manually private static void insertSpecial(char[] initLetters){...} //Creates the full password private string createPassword(int passwordLength, int specialChars, char[] letters){...} Θέλω για παράδειγμα το "char[] letters = new char[72]" να δημιουργείται όχι σε κάθε πάτημα του κουμπιού, αλλά να είναι ένα και μοναδικό για το πρόγραμμα. Στην τελική, στέλνω αυτές τις μεθόδους σε μια κλάση, δημιουργώ αντικείμενο Password και χρησιμοποιώ εκείνο. Και πάλι όμως, θέλω μόνο ένα αντικείμενο Password κι όχι να δημιουργείται κάθε φορά που πατάω το κουμπί. Ελπίζω να μη σας μπέρδεψα περισσότερο. Η αλήθεια είναι ότι τώρα ξεκίνησα Event Driven προγραμματισμό, τόσο καιρό κάναμε command line προγράμματα με Java στη σχολή...
Evgenios1 Δημοσ. 7 Δεκεμβρίου 2008 Δημοσ. 7 Δεκεμβρίου 2008 μαθε string -----Προστέθηκε 7/12/2008 στις 05 : 51 : 39----- βασηκα οταν λες οτι θες ενα αντικειμενο password, ενοεις μια κλαση password δλδ > class Password { private string pass; public byte[] Pass {get;private set;} public Key key{get;private set;} public Password(Key k,string s) { Pass=Encrypt(k,s); } private byte[] Encrypt(Key k, string s) { \\μια μεθοδος με την οποιοα κανεις encrypt } } public class Key { } θα βαλεις και δυο static override operator (==,!=) για να συκγρινεις Password με Password
Wise_One Δημοσ. 8 Δεκεμβρίου 2008 Μέλος Δημοσ. 8 Δεκεμβρίου 2008 Και πάλι νομίζω ότι δεν είναι αυτό που θέλω. Συγνώμη κιόλας που σας ζορίζω απλά εγώ ίσως δε σας το δίνω σωστά. Ας πούμε ότι θέλω αυτές τις αρχικοποιήσεις να τις κάνω στη Main() του προγράμματος κι όχι στη μέθοδο του event. Άσε τις μεθόδους που έδωσα παραπάνω. Θέλω δηλαδή το event του συγκεκριμένου κουμπιού να είναι απλά μια άλλη μέθοδος, όχι η "Main" όπως έχω τώρα. Ό,τι γράφω στη μέθοδο του event, θ' αλληλεπιδρά απλά με αντικείμενα που έχω στη "Main".
Evgenios1 Δημοσ. 9 Δεκεμβρίου 2008 Δημοσ. 9 Δεκεμβρίου 2008 (περιεγος) αααα! Λοιπον, εχεις classes MainWinClass WinClass Program H MainWinClass εχει μεσα της τη WinClass και η WinClass εχει ενα button που οταν το πατισεις,θελεις να σου περναει το event , οχι στη WinClass αλλα στη MainWinClass. ληση α >public Button button1; ληση β >delegate void simplehandler();
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.