bigN Δημοσ. 21 Μαΐου 2009 Δημοσ. 21 Μαΐου 2009 Γεια σας, Έχω μια ερώτηση σχετικά με την επικοινωνία μεταξύ δύο User Control. Εν ολίγις προσπαθώ να μετατρέψω την .ΝΕΤ εφαρμογή μου (C#) όπου χρησιμοποιώ εκτεταμένα Tab panels σε ένα πιο φιλικό GUI. Η κύρια φόρμα μου αποτελείται από split container όπου στο αριστερό πανελ έχω τα κουμπιά και στο δεξι πάνελ εμφανίζονται τα user control. Έχω καταφέρει να εμφανίζονται σωστά τα User Control, όμως αυτό που προσπαθώ να κάνω είναι να συλλέξω τις πληροφορίες από το user control 1, να κάνω τους υπολογισμούς, και να εμφανίσω τα αποτελέσματα στο user control 2. Επίσης υπάρχει ενδεχόμενο να αποθηκεύω μερικά αποτελέσματα υπολογισμών στην κύρια φόρμα. Ευχαριστώ.
Evgenios1 Δημοσ. 21 Μαΐου 2009 Δημοσ. 21 Μαΐου 2009 Γενικη ερωτηση.. γενικη απαντηση >using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); uc1 u1 = new uc1(); uc2 u2 = new uc2 { parent = u1 }; u1.parent = u2; } } class uc1 : UserControl,Iuc { private string data; public Iuc parent { get; set; } public string Data { get { return data; } set { data = value; } } void GetDataFromParentUC() { string newData = parent.Data; } } class uc2 : UserControl,Iuc { private string data; public Iuc parent { get; set; } public string Data { get { return data; } set { data = value; } } void getDataFromParent() { string newData = parent.Data; } } public interface Iuc { string Data { get; set; } } }
bigN Δημοσ. 22 Μαΐου 2009 Μέλος Δημοσ. 22 Μαΐου 2009 Ενδιαφέρον η προσέγγισή σου..... μέχρι τώρα έχω βρεί παραδείγματα μόνο με event Handler, μάλλον μπορείς να κάνεις το ίδιο πράγμα με άπειρους τρόπους. Ποιος όμως από τους δύο είναι πιο εύκολος και πιο "σωστός" . > using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace EventsTesting { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { testControl1.ButtonClick += new System.EventHandler(testControl1_ButtonClick); } void testControl1_ButtonClick(object sender, EventArgs e) { label1.Text = testControl1.TextBoxValue; } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; namespace MyLibrary { public partial class TestControl : UserControl { public event EventHandler ButtonClick; public TestControl() { InitializeComponent(); } public string TextBoxValue { get { return textBox1.Text; } } private void OnButtonClicked(EventArgs e) { if (ButtonClick != null) { ButtonClick(this, e); } } private void button1_Click(object sender, EventArgs e) { textBox1.Text = "Thank You"; OnButtonClicked(e); } } }
Evgenios1 Δημοσ. 22 Μαΐου 2009 Δημοσ. 22 Μαΐου 2009 Πιο σωστος? οχι ακριβος,πιο απλος ειναι με ενα interface.
bigN Δημοσ. 22 Μαΐου 2009 Μέλος Δημοσ. 22 Μαΐου 2009 φαντάζομαι ότι μπορείς να το κάνεις και χωρίς interface.... ή κάνω λάθος.
Evgenios1 Δημοσ. 22 Μαΐου 2009 Δημοσ. 22 Μαΐου 2009 Και βεβαια μπορεις. Αλλα εδω εχεις να κανεις με χ αντικειμενα, τα οποια εινα διαφορετικα μεταξι τους, και θελεις το ιδιο πραμα απο ολα τα αντικειμενα.
bigN Δημοσ. 24 Μαΐου 2009 Μέλος Δημοσ. 24 Μαΐου 2009 Και βεβαια μπορεις. Αλλα εδω εχεις να κανεις με χ αντικειμενα, τα οποια εινα διαφορετικα μεταξι τους, και θελεις το ιδιο πραμα απο ολα τα αντικειμενα. Μετά από πολλή ψάξιμο βρήκα το παρακάτω άρθρο >http://www.akadia.com/services/dotnet_user_controls.html#Communication%20between%20User%20Controls%20and%20subscribing%20Applications Πάντως, περίμενα να βρώ ένα γενικευμένο τρόπο αντιμετώπισης του προβλήματος (pattern) μιας και οι περισσότερες εμπορικές εφαρμογές χρησιμοποιούν αυτή τη τεχνική για κατασκευή GUI...
Evgenios1 Δημοσ. 24 Μαΐου 2009 Δημοσ. 24 Μαΐου 2009 Αυτο ειναι για να φτιαχνεις template/custom controls.
bigN Δημοσ. 25 Μαΐου 2009 Μέλος Δημοσ. 25 Μαΐου 2009 Αυτο ειναι για να φτιαχνεις template/custom controls. Μπορεί να το αναφέρει ο τίτλος ....αλλά παρακάτω λέει ότι είναι και γαι user controls. Έχεις χρησιμοποιήσει αυτή τη "τεχνική"?...
Evgenios1 Δημοσ. 25 Μαΐου 2009 Δημοσ. 25 Μαΐου 2009 Μπορεί να το αναφέρει ο τίτλος ....αλλά παρακάτω λέει ότι είναι και γαι user controls.Έχεις χρησιμοποιήσει αυτή τη "τεχνική"?... Ποια τεχνικη? αυτη που λεει στο σαϊτ? Δλδ να φτιαξω ενα template control για να το βαζω με τον designer?
bigN Δημοσ. 26 Μαΐου 2009 Μέλος Δημοσ. 26 Μαΐου 2009 Ποια τεχνικη? αυτη που λεει στο σαϊτ? Δλδ να φτιαξω ενα template control για να το βαζω με τον designer? Μάλλον δεν ημουν σαφής... σορρυ..... στην τεχνική που αναφερόμουν ήταν περισσότερο η επικοινωνία των δύο user control μέσω event hander.... Βέβαια το άρθρο αναφέρει και πιο γενικά παράδειγματα αυτά με το template control που τα εισάγεις στην φόρμα, που προς το παρρόν δεν με αφορά
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.