1) ניצור תוכנית רגילה Windows Application, ניתן שם לטופס ברירת המחדל: mainFrm.cs
2) לחיצה ימנית על solution, ואז add → new project → Windows Control Library
ייווצר User Control, נבחר ונשנה לו את השם – לדוגמה WCL, נוסיף לחצנים, תיבות וכדומה.
ייווצר User Control, נבחר ונשנה לו את השם – לדוגמה WCL, נוסיף לחצנים, תיבות וכדומה.
3) כעת ניתן להוסיף את הפרויקט WCL ב-reference של הטופס הראשי,
אך כדי שיופיע גם ב-Toolbox נעשה build לפחות ל-WCL.
אך כדי שיופיע גם ב-Toolbox נעשה build לפחות ל-WCL.
4) לחיצה ימנית על reference שנמצא בבלוק של הטופס הראשי, נבחר Add Reference….
נוסיף את ההפניה לפרויקט שיצרנו בלשונית Projects או נבחר קובץ dll חיצוני בלשונית Browse
5) UserControl שיצרנו אמור להופיע ב-Toolbox.
אם לא, נוסיף אותו ע"י לחיצה ימנית ← Choose Items ← לשונית Net Framework ←נלחץ Browse
ונבחר בקובץ ה-dll שנמצא בפרויקט, בדרך כלל ב- ProjectName/SolutionName/bin/debug
או במקרה שלנו: UcApp/UcApp/bin/debug
אם לא, נוסיף אותו ע"י לחיצה ימנית ← Choose Items ← לשונית Net Framework ←נלחץ Browse
ונבחר בקובץ ה-dll שנמצא בפרויקט, בדרך כלל ב- ProjectName/SolutionName/bin/debug
או במקרה שלנו: UcApp/UcApp/bin/debug
עד כאן יצרנו UserControl והוספנו אותו לטופס הראשי בתור פקד.
כדי ליצור תקשורת בין אותו פקד לטופס הראשי נשתמש ב-delegate :
כדי ליצור תקשורת בין אותו פקד לטופס הראשי נשתמש ב-delegate :
(את הקוד הבא נוסיף בתוך ה-UserControl)
public delegate void mydelegate(string s);
public event mydelegate strsent;
public virtual void onSendString(string s)
{
strsent(s);
}
נלך לטופס הראשי, נבחר ב-WCL שמיקמנו בטופס, נבחר ב-Properties ואז נבחר בצורת הברק כדי להיכנס להגדרת 'Events' ונמצא את השם שהגדרנו ל-Event שיצרנו - כלומר strsent .
נלחץ לחיצה כפולה ובתוכו נגדיר אילו פעולות יתבצעו על המחרוזת שנקבל בהתרחש האירוע. למשל:
(הקוד הבא נמצא בטופס הראשי)
private void userControl11_strsent(string s)
{
MessageBox.Show(s);
}
עד כאן הגדרנו לטופס הראשי שבהתקבל מחרוזת מתוך הפקד WCL שהגדרנו, אזי תוקפץ הודעה עם המחרוזת.
כעת עלינו לקשר בין הכפתור שנמצא ב-WCL לבין שליחת המחרוזת:
(הקוד הבא נמצא ב-UserControl)
private void button1_Click(object sender, EventArgs e)
{
onSendString(textBox1.Text);
// strsent(textBox1.Text);
}