2017-09-17 3 views
0

Je suis sûr que ce n'est pas bon de faire quelque chose comme ça, mais j'étais curieux si il est possible ....Have Text Box événement En Different Class

J'ai essayé en utilisant Visual Studio 2015, mais J'ai reçu plusieurs erreurs de compilation (pour beaucoup à publier) - mais ce qui m'intéressait surtout, c'est si vous pouviez avoir l'événement _Leave() d'une boîte de texte dans une classe différente. Quelque chose comme le dessous

namespace BlueGreenRed 
{ 
    public partial class Red : UserControl 
    { 
     //In this class I have a text box called txtName 
    } 
} 



namespace BlueGreenRed 
{ 
    class ReusableMethods 
    { 
     private void txtName_Leave(object sender, EventArgs e) 
     { 
      //Do something here 
     } 
    } 
} 
+1

si 'ReusableMethods' a une référence à la classe' Red' que vous voulez, et 'txtName' est visible publiquement, vous pouvez certainement câbler l'événement. Mais cela semble idiot à ce moment-là – Jonesopolis

+0

@Jonesopolis - J'étais curieux de savoir si c'était possible. Je suis sûr que c'est une pratique horrible de le faire :) – BellHopByDayAmetuerCoderByNigh

Répondre

1

Bien sûr, vous pouvez faire:

public class Red 
{ 
    public TextBox TxtName {get; set; } 
} 

public static class ReusableMethods 
{ 
    public static void WireUp(Red red) 
    { 
     red.TxtName.Leave += txtName_Leave; 
    } 

    private static void txtName_Leave(object sender, EventArgs e) 
    { 
     //Do something here 
    } 
} 

//some other code 

var red1 = new Red() { TxtName = new TextBox() }; 
var red2 = new Red() { TxtName = new TextBox() }; 

ReusableMethods.WireUp(red1); 
ReusableMethods.WireUp(red2);