Toon posts:

[ASP.NET C#] Koppelen van een bv. textchanged function

Pagina: 1
Acties:

Verwijderd

Topicstarter
Je hebt een page class en daarnaast een utilities class.

Vanuit de utilities class wordt bijvoorbeeld een textbox dynamisch in de page gezet ook wil ik hier dynamisch het textchanged event zetten met een functie uit de page class.

Wat is hiervoor de beste manier??? oftewel hoe moet ik dit aanpakken?

  • Peetman
  • Registratie: Oktober 2001
  • Laatst online: 14:46

Peetman

Tjah....

Gebruik AddHandler

Oh nee, dat is de VB manier.

C#:
1
txtBlah.TextChanged += new System.EventHandler ( this.TextChanged );

[ Voor 96% gewijzigd door Peetman op 15-10-2004 16:56 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:21

gorgi_19

Kruimeltjes zijn weer op :9

peetman schreef op 15 oktober 2004 @ 16:53:
Gebruik AddHandler

Oh nee, dat is de VB manier.
Voor C#, zie http://www.google.be/sear...andler+textbox+C%23&meta=

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ja dat begrijp ik.
Ik maak de textbox dynamisch aan vanuit een andere class en dan wil ik dus het textchanged event koppelen met een functie uit de page class.

Dat je dat als volgt doet begrijp ook ik.
txtObject.TextChanged += new System.EventHandler(txtSubject_TextChanged);

Maar nu komt txtSubject_TextChanged uit de page class. Hoe koppel je dat dan?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:21

gorgi_19

Kruimeltjes zijn weer op :9

Dan gebruik je of een delegate, of je raised een event. Deze laat je dan afhandelen in de page class.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 15 oktober 2004 @ 17:02:
Dan gebruik je of een delegate, of je raised een event. Deze laat je dan afhandelen in de page class.
Okay ik kom er niet 1,2,3 uit.

Ik heb dus nu een Page class en een Utilities class.
In de utilities class maak ik een textbox aan waaraan een textchanged event gekoppeld moet worden. Deze functie staat in de Page class.

Dus ik moet de functie beschikbaar hebben vanuit de pageclass om deze te koppelen aan het texthanged event.

Als ik het met een delegate wil oplossen hoe moet ik dan te werk gaan??
Wie kan mij een duw in de goede richting geven??

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 14:59

pjvandesande

GC.Collect(head);

Zoek gewoon op msdn is, daar staat toch alles gewoon uitgelegd. Zelf dynamisch alles koppelen heb ik al meerderen malen artikelen over gelezen op msdn.

Je kunt zoals hierboven in de posts al aagegeven, event wire'n dmv delegates. Lees hier is meer over.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void Button1_Click(...)
{
   TextBox tb = new TextBox();
   tb.Size = ... ;
   tb.Position = ... ;
   tb.TextChanged += new System.TextChangeEventHandler( tb_TextChanged );

}

private void tb_TextChanged(object sender, ...)
{
   TextBox textBox = (TextBox)sender; // set de sender
   ...
}


edit:
Is uit me hoofd trouwens, dus kunnen wat foutjes in zitten en die ...-tjes natuurlijk even niet zo in je source zetten.
:)

[ Voor 18% gewijzigd door pjvandesande op 18-10-2004 14:40 ]


Verwijderd

Topicstarter
questa schreef op 18 oktober 2004 @ 14:36:
Zoek gewoon op msdn is, daar staat toch alles gewoon uitgelegd. Zelf dynamisch alles koppelen heb ik al meerderen malen artikelen over gelezen op msdn.

Je kunt zoals hierboven in de posts al aagegeven, event wire'n dmv delegates. Lees hier is meer over.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void Button1_Click(...)
{
   TextBox tb = new TextBox();
   tb.Size = ... ;
   tb.Position = ... ;
   tb.TextChanged += new System.EventHandler ( tb_TextChanged );

}

private void tb_TextChanged(object sender, ...)
{
   TextBox textBox = (TextBox)sender; // set de sender
   ...
}


edit:
Is uit me hoofd trouwens, dus kunnen wat foutjes in zitten en die ...-tjes natuurlijk even niet zo in je source zetten.
:)
Je voorbeeld is helemaal duidelijk en ook geen probleem voor mij.
Maar hoe koppel ik uit jouw voorbeeld de new System.EventHandler() met een functie uit een andere class??

Ik zal eens wat opzoeken over event wire dmv delegates.

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 14:59

pjvandesande

GC.Collect(head);

Je moet wel de goede delegate bij een goed event proppen. Let daar wel even op. Anders krijg je een exception, dus het valt wel op. Op MSDN staat ook bij elk event welke delegate hier voor nodig is. (dacht ik B)).

  • LoekD
  • Registratie: Augustus 2000
  • Laatst online: 11-05 17:04
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
public class Utility : System.Web.UI.UserControl
{
        protected System.Web.UI.WebControls.LinkButton LinkButton1;

        private string _id;
        
        public new string ID
        {
            get
            {
                return this._id;
            }
            set
            {
                this._id = value;
            }
        }

        
        public event EventHandler OnClick;

#region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
            this.LinkButton1.Click+=new EventHandler(LinkButton1_Click);
        }
        
        /// <summary>
        ///     Required method for Designer support - do not modify
        ///     the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            
        }
        #endregion

        private void LinkButton1_Click(object sender, EventArgs e)
        {
            if( this.OnClick != null )
                OnClick( this, e );
        }
    }


public class Page : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.PlaceHolder phReportLinks;
        
        private void Page_Load(object sender, System.EventArgs e)
        {   //altijd controls toevoegen
                        GetReportCollection();      
                                }

        private void GetReportCollection()
        {                                       
            Hashtable ht = _fc.Items;
            foreach( string key in ht.Keys )
            {               
                UserControls.Utilities u  = (UserControls.Utilities)LoadControl( @".\UserControls\Utilities.ascx" );
                u.ID = Guid.NewGuid().ToString();   
  
                u.OnClick += new EventHandler(lbtn_Click);
    
                this.phReportLinks.Controls.Add( u );
            }

            this.DataBind();

        }


        private void lbtn_Click(object sender, EventArgs e)
        {
            string id = ((UserControls.Utilities)sender).ID;
        }
    }
}


Zoiets?
edit:

vervang click voor textchanged dan natuurlijk he..

[ Voor 3% gewijzigd door LoekD op 19-10-2004 08:28 ]

Hoe meer je drinkt, hoe korter je leeft, hoe minder je drinkt

Pagina: 1