Προς το περιεχόμενο

Visual C# - Default ενέργειες κατά την εκτέλεση προγράμματος


Wise_One

Προτεινόμενες αναρτήσεις

Δημοσ.

Δε μπορούσα να βάλω στον τίτλο αυτό ακριβώς που θέλω να κάνω. Δεν είναι και πολύ κατατοπιστικός. Εξηγούμαι.

 

Φτιάχνω τη φόρμα μου. Θέλω κάθε φορά που τρέχω το πρόγραμμα, να γίνονται κάποιες default ενέργειες όπως "String[] letters;" και "Random generator = new Random();".

 

Όταν κλικάρω ένα κουμπί, θέλω να δημιουργείται ένα αντικείμενο όπως "letters = String[62]" ή "letters = String[72]" σύμφωνα μ' ένα checkbox που θα έχω. Κάθε φορά και διαφορετικό αντικείμενο.

 

Αν βάλω αυτά που θέλω να γίνονται με κάθε εκτέλεση του προγράμματος, στη μέθοδο

>public Form1()
       {
           InitializeComponent();
       }

κάτω απ' την Initialize... θα δουλέψει;

Δημοσ.

Δεν ξεκαθαρίζεις ακριβώς που θέλεις να αρχικοποιείς τον πίνακά σου. Αν θέλεις να συμβαίνει αυτό με το που δημιουργείται η φόρμα τότε ναι μπορείς να το κάνεις μέσα στον constructor. Αν πάλι θέλεις να γίνεται η αρχικοποίηση όταν πατάς ένα κουμπί τότε αυτό θα το κάνεις στο ανάλογο event.

Δημοσ.

Λοιπον, εαν θες στο πατιμα ενος κουμπιου να σου πεταγετε ενα νεο παραθιρο με ενα τιτλο που να γραφει κατι(αυτο καταλαβα)θα κανεις τα παρακατο:

 

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();

Δημοσ.

Καταρχήν σας ευχαριστώ πολύ για τον κόπο που κάνατε. Αλλά νομίζω ότι σας μπέρδεψα. Θα προσπαθήσω να το εξηγήσω καλύτερα.

 

Φτιάχνω το πρόγραμμα ΟΚ; Όταν το τρέχω (και χωρίς να πατήσω κάποιο κουμπί) θέλω να δημιουργούνται κάποια αντικείμενα. Ένας πίνακας κι ένας 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 στη σχολή...

Δημοσ.

μαθε 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

Δημοσ.

Και πάλι νομίζω ότι δεν είναι αυτό που θέλω. Συγνώμη κιόλας που σας ζορίζω απλά εγώ ίσως δε σας το δίνω σωστά. Ας πούμε ότι θέλω αυτές τις αρχικοποιήσεις να τις κάνω στη Main() του προγράμματος κι όχι στη μέθοδο του event. Άσε τις μεθόδους που έδωσα παραπάνω. Θέλω δηλαδή το event του συγκεκριμένου κουμπιού να είναι απλά μια άλλη μέθοδος, όχι η "Main" όπως έχω τώρα. Ό,τι γράφω στη μέθοδο του event, θ' αλληλεπιδρά απλά με αντικείμενα που έχω στη "Main".

Δημοσ.

(περιεγος)

αααα!

Λοιπον, εχεις classes

MainWinClass

WinClass

Program

H MainWinClass εχει μεσα της τη WinClass και η WinClass εχει ενα button που οταν το πατισεις,θελεις να σου περναει το event , οχι στη WinClass αλλα στη MainWinClass.

 

ληση α

>public Button button1;  

ληση β

>delegate void simplehandler();

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...