SelectAll OnGotFocus Windows.Forms.TextBox

13 ביוני 2012

תגיות: , , ,
אין תגובות

יצא לי לא מזמן לנסות לכתוב קוד שיגרום לטקסט בתיבת הטקסט להיות במצב בחור (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;

}

 

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

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים