DCSIMG
SelectAll OnGotFocus Windows.Forms.TextBox - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

SelectAll OnGotFocus Windows.Forms.TextBox

יצא לי לא מזמן לנסות לכתוב קוד שיגרום לטקסט בתיבת הטקסט להיות במצב בחור (Selected) בזמן שתיבת הטקסט מקבלת פוקוס.

הקוד הראשון שכתבתי היה כזה:

protected override void OnGotFocus(EventArgs e)

{

    base.OnGotFocus(e);

    SelectAll();

}

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

כאן מצאתי את הפתרון.

private bool _alreadyFocused = false;

 

protected override void OnGotFocus(EventArgs e)

{

    base.OnGotFocus(e);

    SelectAll();

    _alreadyFocused = true;

}

 

protected override void OnMouseUp(MouseEventArgs mevent)

{

    if (!_alreadyFocused && SelectionLength == 0)

    {

        SelectAll();

        _alreadyFocused = true;

    }

    base.OnMouseUp(mevent);

}

 

protected override void OnLeave(EventArgs e)

{

    base.OnLeave(e);

    _alreadyFocused = false;

}

 

הקוד הנ"ל מאפשר לבחור את הטקסט בזמן לחיצה על העכבר – אם זה הלחיצה הראשונה לפני שהתיבה איבדה את הפוקוס.

פורסם: Jun 13 2012, 08:11 PM by Shlomo | with no comments
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 7 and 7 and type the answer here:


Enter the numbers above: