none
control 離開焦點 RRS feed

  • 問題

  • 我建一個usercontrol  內有textbox  跟 monthCalendar

    當點選焦點在textbox 時 顯示monthCalendar 用GotFocus事件

    當點擊monthCalendar 或是焦點離開時monthCalendar 隱藏

    目前不知道焦點離開 該使用什麼事件  leave的話必須是輸入焦點變更,而我直接點選form的空白處會無效


    • 已編輯 StuBoo 2018年4月10日 上午 01:00
    2018年4月10日 上午 12:58

解答

  • 建議使用DateTimePicker控制項取代MonthCalendar就可以達到您要的效果
    • 已標示為解答 StuBoo 2018年4月16日 上午 08:07
    2018年4月10日 上午 02:23

所有回覆

  • 建議使用DateTimePicker控制項取代MonthCalendar就可以達到您要的效果
    • 已標示為解答 StuBoo 2018年4月16日 上午 08:07
    2018年4月10日 上午 02:23
  • 我用了一個土砲、很醜的方式達到你要的效果,簡單說就是將所有 control 的 Enter 及 form 的 click event 都加上隱藏 monthCalendar 這件事....程式碼如下,獻醜了 XD

    namespace monthCalendar
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            // 隱藏 monthCalendar1
            private void Form1_Load(object sender, EventArgs e)
            {
                SetFocusEnterEvent(this);
            }
    
            private void SetFocusEnterEvent(Control control)
            {
                if (control == textBox1 || control == monthCalendar1)
                    return;
                
                control.Enter += ControlReceivedFocus;
                foreach (Control childControl in control.Controls)
                {
                    SetFocusEnterEvent(childControl);
                }
            }
    
            private void Form1_Click(object sender, EventArgs e)
            {
                ControlReceivedFocus(sender, e);
            }
    
            private void ControlReceivedFocus(object sender, EventArgs e)
            {
                this.monthCalendar1.Visible = false;
            }
    
            // 顯示 monthCalendar1
            private void textBox1_Enter(object sender, EventArgs e)
            {
                this.monthCalendar1.Visible = true;
            }
    
            // 在 textBox1 顯示所選日期
            private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
            {
                this.textBox1.Text = this.monthCalendar1.SelectionStart.ToString();
            }
        }
    }

    希望有幫上你的忙~

    2018年4月10日 下午 03:31