abort control focus executed by mou

esakal

New member
abort control focus executed by mou

שלום, אני מפתח ב C# .net 2005 - winform אני יודע שהמייל ארוך, זה בשביל לענות על שאלות פוטנציאליות. ממש אשמח אם תקראו עד הסוף. יש לי מספר פקדים על המסך. אני רוצה לדעת כאשר משתמש מנסה להעביר פוקוס לפקד אחר לפני שהוא מעביר אותו. יש לי מספר דרישות טכנולוגיות שאני לא יכול לוותר עליהם: 1. אני לא מעוניין שהאירועים השונים ייזרקו (כגון Enter,GotFocus,LostFocus,Leave). 2. כדי לקיים את דרישה 1 - אני לא יכול להקשיב לאחד מהם ולהחזיר את הפוקוס חזרה לפקד שבו הייתי. נסיון שעשיתי - לא הצליח: 1. חשבתי להקשיב להודעות מערכת ההפעלה על-ידי ביצוע override למתודה WndProc של כל פקד. 2. ברגע שחוזרת הודעה שנלחץ כפתור שמאל (WM_LBUTTONDOWN) - לבצע את הבדיקות שלי ולהחליט האם לאפשר את העברת ההודעה לפקד או לא. הסיבה שזה לא הצליח: לא תמיד מגיעה אלי הודעה זו. לדעתי זה בגלל שהפקדים יכולים להיות בתוך פקדים אחרים (Panel,UserControl, FlowLayout). במצב כזה ייתכן שההודעה מגיע לפקד עליון יותר ולאחר מכן מתורגמת לפקודות (ולכן ההודעה לא מגיעה לייעדה). האם יש דרך אחרת? אשמח לתשובה מהירה, לכן אני מצרף את הMSN שלי - [email protected]. תודה תודה ערן.
 

Miki Watts

New member
לבדיקות ביציאה מהפקד אתה צריך לתפוס

את אירוע validating / validate, זה המקום לעשות את הבדיקות
 

esakal

New member
זה בעייתי... כי אז נזרקים האירועים.

שלום, כפי שאמרתי, הדרישה שלי היא מאוד ספציפית ויש לה דרישות טכנולוגיות מוגדרות. האירועים שאמרת נזרקים רק כשמתחילים את תהליך הכניסה לפקד (הרבה אחרי Enter Leave וכאלו). אני צריך לדעת כשלוחצים על פקד בנקודה שבה אוכל להגיד לו לא לבצע את הכניסה (המשמעות, לא להעביר לפקד את ההודעה). אני לא יכול לבצע את זה בWndProc כי אי אפשר לדעת איזה הודעה תשלח לפקד.
 

Miki Watts

New member
אתה כן יכול לעשות את זה ב wndproc,

עשיתי את זה עם פקדים משלי, אתה רק צריך לבדוק את מספר ההודעה שאתה מעוניין בה ולא לקרוא ל base במקרה הזה.
 
למעלה