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

Eπικοινωνία μεταξύ User Controls


bigN

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

Δημοσ.

Γεια σας,

Έχω μια ερώτηση σχετικά με την επικοινωνία μεταξύ δύο User Control. Εν ολίγις προσπαθώ να μετατρέψω την .ΝΕΤ εφαρμογή μου (C#) όπου χρησιμοποιώ εκτεταμένα Tab panels σε ένα πιο φιλικό GUI. Η κύρια φόρμα μου αποτελείται από split container όπου στο αριστερό πανελ έχω τα κουμπιά και στο δεξι πάνελ εμφανίζονται τα user control. Έχω καταφέρει να εμφανίζονται σωστά τα User Control, όμως αυτό που προσπαθώ να κάνω είναι να συλλέξω τις πληροφορίες από το user control 1, να κάνω τους υπολογισμούς, και να εμφανίσω τα αποτελέσματα στο user control 2.

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

Ευχαριστώ.

Δημοσ.

Γενικη ερωτηση.. γενικη απαντηση

>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; }
   }
}

Δημοσ.

Ενδιαφέρον η προσέγγισή σου..... μέχρι τώρα έχω βρεί παραδείγματα μόνο με 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);
       }
   }
}

Δημοσ.

Και βεβαια μπορεις. Αλλα εδω εχεις να κανεις με χ αντικειμενα, τα οποια εινα διαφορετικα μεταξι τους, και θελεις το ιδιο πραμα απο ολα τα αντικειμενα.

Δημοσ.
Και βεβαια μπορεις. Αλλα εδω εχεις να κανεις με χ αντικειμενα, τα οποια εινα διαφορετικα μεταξι τους, και θελεις το ιδιο πραμα απο ολα τα αντικειμενα.

 

Μετά από πολλή ψάξιμο βρήκα το παρακάτω άρθρο

>http://www.akadia.com/services/dotnet_user_controls.html#Communication%20between%20User%20Controls%20and%20subscribing%20Applications

 

Πάντως, περίμενα να βρώ ένα γενικευμένο τρόπο αντιμετώπισης του προβλήματος (pattern) μιας και οι περισσότερες εμπορικές εφαρμογές χρησιμοποιούν αυτή τη τεχνική για κατασκευή GUI...

Δημοσ.
Αυτο ειναι για να φτιαχνεις template/custom controls.

 

Μπορεί να το αναφέρει ο τίτλος ....αλλά παρακάτω λέει ότι είναι και γαι user controls.

Έχεις χρησιμοποιήσει αυτή τη "τεχνική"?...

Δημοσ.
Μπορεί να το αναφέρει ο τίτλος ....αλλά παρακάτω λέει ότι είναι και γαι user controls.

Έχεις χρησιμοποιήσει αυτή τη "τεχνική"?...

Ποια τεχνικη? αυτη που λεει στο σαϊτ? Δλδ να φτιαξω ενα template control για να το βαζω με τον designer?

Δημοσ.
Ποια τεχνικη? αυτη που λεει στο σαϊτ? Δλδ να φτιαξω ενα template control για να το βαζω με τον designer?

 

Μάλλον δεν ημουν σαφής... σορρυ..... στην τεχνική που αναφερόμουν ήταν περισσότερο η επικοινωνία των δύο user control μέσω event hander....

Βέβαια το άρθρο αναφέρει και πιο γενικά παράδειγματα αυτά με το template control που τα εισάγεις στην φόρμα, που προς το παρρόν δεν με αφορά :)

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

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

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