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

 

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

Εναλλαγή label σε textbox

Îåêßíçóå áðü ôï ìÝëïò giannaros. Τελευταία δημοσίευση από το μέλος object+ στις 09-01-2010, 16:31. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  04-01-2010, 21:20 56212

    Εναλλαγή label σε textbox

    Καλησπέρα
    αναπτύσσω μια εφαρμογή σε windows forms η οποία θέλω να εμφανίζει κάποια από τα fields των tables (αρκετά) σε labels.Θέλω ο χρήστης να μπορεί να επεξεργαστεί τα δεδομένα κάνοντας διπλό κλικ πάνω σε ένα label το οποία θα μετατρέπεται σε textbox. Αυτό το έχω κάνει βάζοντας ένα textbox πάνω από ένα label και παίζω με το visible(true/false).Το πρόβλημα είναι ότι χρειάζεται να γράφω κώδικα για κάθε διαφορετικό label. Υπάρχει μήπως κάποιος εναλακτικός τρόπος?
    Ευχαριστώ πολύ για όποια απάντηση.
  •  04-01-2010, 21:43 56214 σε απάντηση της 56212

    Απ: Εναλλαγή label σε textbox

    Δεν χρειάζεται να γράφεις διαφορετικό κώδικα για κάθε label. Μπορείς να επιλέξεις την ίδια μέθοδο ως event handler για το DoubleClick event όλων των label controls που χρησιμοποιείς. Μπορείς να δεις ποιό label δημιούργησε το event ελέγχοντας την τιμή της παραμέτρου sender. Αν δημιουργείς τα lables δυναμικά απλά ορίζεις την ίδια μέθοδο ως event handler. Αν δημιουργείς τα lables στο form designer μπορείς να τα επιλέξεις όλα με Control + Click και μετά να θέσεις σε όλα μαζί τον ίδιο event handler στο Double Click event
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  05-01-2010, 18:32 56230 σε απάντηση της 56214

    Απ: Εναλλαγή label σε textbox

    Σε ευχαριστώ πολύ.Ήταν αρκετά απλό τελικά.
  •  09-01-2010, 16:31 56293 σε απάντηση της 56230

    Απ: Εναλλαγή label σε textbox

    Μια λυση ειναι αυτη που ειπε και ο Παναγιωτης. Αλλα εγω θα σου προτεινα να φτιαξεις ενα control και μετα να το  βαλεις σα components, για να μην εχεις 213123123 γραμμες κωδικα στην main form, για πιο ευκολο debuggng Stick out tongue .
    τσεκαρε το παρακατω για να παρεις μια ιδεα.


        public class LabelEditable_ : Panel
    {
    //vars
    private Label label;
    private TextBox textbox;
    //props
    public string Txt { get { return label.Text; } set { label.Text = value; } }
    //events
    public event Action<string> TextChnanged;

    public LabelEditable_()
    {

    label = new Label { Height = this.Height, Width = this.Width , Text = this.Text };
    textbox = new TextBox { Height = this.Height, Width = this.Width -2};
    this.TextChnanged = new Action<string>(OnTextChanged);
    label.DoubleClick += delegate
    {
    Controls.Remove(label);
    Controls.Add(textbox);
    textbox.Focus();
    };
    textbox.KeyDown += delegate(object s, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Enter)
    {
    label.Text = textbox.Text;
    Controls.Remove(textbox);
    Controls.Add(label);
    TextChnanged(textbox.Text);
    }
    };
    this.Controls.Add(label);
    }
    protected virtual void OnTextChanged(string e)
    {
    //foo
    }
    }
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems