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

 

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

events στα διάφορα UI elements

Îåêßíçóå áðü ôï ìÝëïò plasmatek. Τελευταία δημοσίευση από το μέλος KelMan στις 22-02-2008, 17:48. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  22-02-2008, 15:37 40405

    events στα διάφορα UI elements

    Έστω ότι έχω στον XAML κώδικα μου:

    <Button Click="OnClick">Go!</Button>

    με ποιόν τρόπο αποφασίζεται από ποιο Object θα κληθεί η OnClick();

    ή ισοδύναμα

    υπάρχει κάποιος τρόπος να του πω εγώ από ποιο Object να εκτελέσει την μέθοδο OnClick();

  •  22-02-2008, 16:21 40408 σε απάντηση της 40405

    Απ: events στα διάφορα UI elements

    Ουσιαστικά γίνεται μια συσχέτιση μεταξύ του button object σου με τον αντίστοιχο κώδικα που αποτελεί τον handler. Αν θες να αναφερθείς εύκολα στο object, θα πρέπει να του δώσεις ένα όνομα χρησιμοποιώντας το Name attribute. Πχ, το

    <Button Height="23" Click="Button_Click" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="75">Button</Button>

    Αντιστοιχεί στο

    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
       MsgBox("Hello")
    End Sub

    Ενώ στο

    <Button Height="23" Name="Button1" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="75">Button</Button>

    Ο κώδικάς σου γίνεται κάπως έτσι:

    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
       MsgBox("Hello")
    End Sub

    Πρόκειται για το ίδιο πράγμα, απλά στην πρώτη περίπτωση το wiring γίνεται "υπόγεια" για σένα.

     

     


    Vir prudens non contra ventum mingit
  •  22-02-2008, 16:47 40410 σε απάντηση της 40408

    Απ: events στα διάφορα UI elements

    μάλλον δεν ήμουν αρκετά σαφής...

    έστω ότι την εφαρμογή μου τήν έχω ονομάσει  TestDB οπότε το  VC# express μου δημιουργεί τα εξής:

    στο Window1.xaml.cs:

    namespace TestDB
    {
        /// <summary>
        /// Interaction logic for Window1.xaml
        /// </summary>
        public partial class Window1 : Window
        {
            public Window1()
            {
                InitializeComponent();
            }
        }

    }

    και στο Window1.xaml:

    <Window x:Class="TestDB.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid >
        </Grid>
    </Window>

    έστω ότι στον κωδικά μου έχω δύο class, obj1 και obj2 που η καθεμιά τους έχει και από μια OnClick().

    που ακριβώς θα ψάξει να βρει την OnClick(); μπορώ να του πω με κάποιο τρόπο ότι θέλω την OnClick() από το obj2;

     

    υγ: plz C#, όχι VB, δεν έχω ιδέα από VB

  •  22-02-2008, 17:48 40413 σε απάντηση της 40410

    Απ: events στα διάφορα UI elements

    Θα πρέπει να ορίσεις διαφορετικό όνομα για τον Event Handler. Αν θέσεις στα δύο Click events τον ίδιο handler, θα κληθεί ο ίδιος handler.

    Αν πάλι θέλεις οπωσδήποτε να έχεις κοινό handler για τα δύο objects, θα πρέπει μέσα στον κώδικά του handler να διαβάζεις το sender object για να καταλάβεις ποιός έχει κάνει trigger το event. Πχ

    Window1.xaml:

    <Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
    <Button Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click">Button</Button>
    <Button Height="23" HorizontalAlignment="Left" Margin="10,43,0,0" Name="button2" VerticalAlignment="Top" Width="75" Click="button1_Click">Button</Button>
    </Grid>
    </Window>

     

    Window1.xaml.cs:

    public partial class Window1 : Window
    {
    public Window1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
    Button btn = (Button)sender;
    MessageBox.Show(btn.Name);
    }
    }

     

     

     


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