הפעלת ארוע ב ASP.NET

shlomolol

New member
הפעלת ארוע ב ASP.NET

אני מעוניין להפעיל ידנית את ארוע קליק של כפתור מסוים. כתבתי את הקוד הבא:
public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { this.Button2.Click( sender, e); } protected void Button2_Click(object sender, EventArgs e) { Label1.Text = "Button2_Click"; } }​
כמובן זו השורה החשובה.
this.Button2.Click( sender, e);​
אבל זה לא עובד. השגיאה היא Error 1 The event 'System.Web.UI.WebControls.Button.Click' can only appear on the left hand side of += or -= C:\Documents and Settings\tzvi\My Documents\Visual Studio 2005\WebSites\TargilTextBox\Default2.aspx.cs 20 22 C:\...\TargilTextBox\
 

shlomolol

New member
אף אחד לא יודע? ויש לי עוד שאלה

נתקלתי בדוגמאות קוד שבהם ישנו משפט המופיע בתוך סוגריים מרובעות. ככה [Bindable(true)] [TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design")] [Category("Data")] מישהו יודע מה זה?
 

HaRmosh

New member
תשובה

זה נקרא Attributes, והם "מתארים", בזמן קומפילציה ובניה של ה-assembly, מאפיינים מסויימים המתייחסים למה שכתוב תחתם, למשל class או פונקציה או כל מיני דברים אחרים. קרא עוד ב-MSDN. בקשר לאירוע - אתה לא יכול להפעיל אותו סתם ככה - ז"א, מבחינה טכנית זה אפשרי, זה סה"כ סוג מתוחכם של קריאה לפונקציה (ע"י delegate), אבל זו לא הכוונה פה. קרא עוד על events ב-#c, כעקרון אתה לא מפעיל את הפונקציה בעצמך אלא משייך אותה (ע"י האופרטור =+) לאירוע, כמו OnClick של כפתור מסויים למשל.
 
זה נכון,

ואם אתה רוצה לעשות משהו מכמה מקומות, הדרך הפשוטה היא ליצור לו פונקציה קטנה, ולקרוא לה מאיפה שאתה רוצה. מהארוע, מארוע אחר, חופשי.
 

shlomolol

New member
תודה על התשובה, אבל אני כן יכול, ..

בארועים שאני יצרתי אני יכול "להרים" ארוע, אז למה לא בארועים של הכפתור?למשל

public delegate void mydel(int x); public event mydel ev; ev += new mydel(func); ev(123); public void func(int x) { ///// }​
 

shoshvany

New member
לא לא יכול, פשוט לא נכון

בגדול, מי שיוזם EVENT זה מי שהגדיר אותו. נגיד אם תחליף את
this.Button2.Click( sender, e);​
ב
this.Button2_Click( sender, e);​
זה יעבוד. אבל הפתרון הנכון הוא לכתוב פונקציה משלך ולקרוא לה בתוך שני הEVENTים
 
למעלה