Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Update, Read from MainForm textbox.

Îåêßíçóå áðü ôï ìÝëïò Τάσκος Γιώργος. Τελευταία δημοσίευση από το μέλος Τάσκος Γιώργος στις 09-10-2008, 23:58. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  09-10-2008, 21:34 45327

    Update, Read from MainForm textbox.

    Δηλάδη αν κατάλαβα καλά, καθώς πειραματίζομαι με διάφορα πάνω σε ένα προγραμματάκι αυτες τις 2-3 μέρες [κάπως πρέπει να μάθεις, η θεωρία δεν λεει κάτι απο μόνη της ε?]
    έφτασα στο σημείο πριν λίγο να θέλω να διαβάσω ή να γράψω στα π.χ. textboxes η και να έχω πρόσβαση σε άλλα controls της MainForm μέσω κάποιων μεθόδων σε κάποια άλλη κλάση,
    και βλέπω ΌΧΙ δεν γίνεται έτσι απλά, ξέρω θα έχει λόγο η microsoft και μου διαφεύγει κάτι. Σκέφτομαι λοιπόν, η λύση ποιά είναι, [Delegates και Threads]? Ή μήπως κάτι ποιό απλό και
    απλά έχω κάψει από τις ώρες πανω στο Visual Studio?

    π.χ.

    myCommand.CommandText = "INSERT INTO EPAFES VALUES("
    + textBox1.Text +",'" + textBox2.Text + ",'"
    + textBox3.Text + ",'" + textBox4.Text + "');";


    Πώς απο την κλάση WorkDataBase που κάνω εργασίες στην βάση θα έχω πρόσβαση στίς τιμές των controls Της MainForm. ?

  •  09-10-2008, 22:12 45328 σε απάντηση της 45327

    Απ: Update, Read from MainForm textbox.

    Πάμε πάλι? Για ξαναγράψε σε απλή δημοτική, γιατί δεν τα πάω καλά με την καθαρεύουσα και τις μεγάλες προτάσεις?

    Ρωτάς πως από μία φόρμα (ή κλάση) να πειράξεις τα controls μίας άλλης φόρμας? Αυτό είναι μία πολύ, πολύ κακή ιδέα αλλά ευτυχώς τα controls είναι private by default. Γι αυτό και δεν μπορείς να τα πειράξεις.

    Ο λόγος που είναι φρικτή ιδέα (τουλάχιστον) είναι ότι έτσι δένεις τις δύο φόρμες μεταξύ τους. Μία αλλαγή στη μία φόρμα θα σε αναγκάσει να αλλάξεις και τον κώδικα της άλλης φόρμας. Αντί γι αυτό είναι καλύτερο να φτιάξεις public μεθόδους στη φόρμα που θέλεις να πειράξεις οι οποίες θα δέχονται παραμέτρους και θα πειράζουν αυτές τα controls της φόρμας τους. Αν για παράδειγμα η φόρμα σου δείχνει τα στοιχεία ενός πελάτη, φτιάξε μία μέθοδο DisplayCustomer η οποία θα δέχεται ως παράμετρο ένα αντικείμενο Customer και θα θέτει στα TextBox της φόρμας σου τα στοιχεία του πελάτη. Έτσι, αν κάποια στιγμή αποφασίσεις ότι αντί για Textbox, θέλεις να δείξεις όλα τα στοιχεία σε listview ή κάτι άλλο, μόνο η φόρμα θα αλλάξει και όχι ο κώδικας που την χρησιμοποιεί.

    Τώρα αν εννοείς κάτι άλλο .... είπαμε, απλή δημοτική.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  09-10-2008, 23:58 45333 σε απάντηση της 45328

    Απ: Update, Read from MainForm textbox.

    [EDIT]
    Το έκανα με παράμετρο ένα πίνακα στην μέθοδο της κλάσης που κάνω εργασίες περί βάσης.
    Τώρα έχω ένα πρόβλημα ότι μου γυρνάει ένα Data Type Mismatch exception όταν κάνω insert αυτή
    την εγγραφή.

    public void AddClient(string[] textBoxes)
    {
    OleDbConnection myDbConnection = new OleDbConnection(o.ConnString);
    OleDbCommand myCommand = new OleDbCommand();

    try
    {

    myCommand.CommandText = "INSERT INTO Epafes (ID, Onoma, Epwnumo, Address, City, Area, PostCode," +
    "Company, AFM, DOY, WorkTel, InternalWork, MobileTel, Fax, Email, ContactID, Comments)" +
    " VALUES('"
    + textBoxes[0] + "','" + textBoxes[1] + "','" + textBoxes[2] + "','" + textBoxes[3] + "','"
    + textBoxes[4] + "','" + textBoxes[5] + "','" + textBoxesDevil + "','" + textBoxes[7] + "','"
    + textBoxesMusic + "','" + textBoxes[9] + "','" + textBoxes[10] + "','" + textBoxes[11] + "','"
    + textBoxes[12] + "','" + textBoxes[13] + "','" + textBoxes[14] + "','" + textBoxes[15] + "','"
    + textBoxes[16] + "'" + ");";
    myCommand.Connection = myDbConnection;
    myDbConnection.Open();
    myCommand.ExecuteNonQuery();
    }



    Που έρχεται απο την κύρια φόρμα ετσι....

    public string[] textBoxes = new string[17];

    DataSrcs d = new DataSrcs();

    textBoxes[0] = "";
    textBoxes[1] = NameTextBox.Text;
    textBoxes[2] = LastNameTextBox.Text;
    textBoxes[3] = AddressTextBox.Text;
    textBoxes[4] = CityTextBox.Text;
    textBoxes[5] = AreaTextBox.Text;
    textBoxesDevil = PkTextBox.Text;
    textBoxes[7] = CompanyTextBox.Text;
    textBoxesMusic = AfmTextBox.Text;
    textBoxes[9] = DoyTextBox.Text;
    textBoxes[10] = PhoneTextBox.Text;
    textBoxes[11] = IntTextBox.Text;
    textBoxes[12] = MobileTextBox.Text;
    textBoxes[13] = FaxTextBox.Text;
    textBoxes[14] = MailTextBox.Text;
    textBoxes[15] = ContactIdTextBox.Text;
    textBoxes[16] = CommentsRichTextBox.Text.ToUpper();

    d.AddClient(textBoxes);


    Πρόσθεσα μόνο τον κώδικα που αφορά το πρόβλημα....

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems