none
groupbox、textbox與button之間的運用 RRS feed

  • 問題

  • 那如果要設定當groupbox1內的checkbox有任何一個被點選

    且textbox的內容有輸入時button的Enabled才會=true

    請問要怎麼去設定

    目前我知道要怎麼設定groupbox1內的checkbox有任何一個被點選

    button的Enabled會=true

    但不知道要如何把textbox的內容是否輸入也加入一起判斷

    請各問高手指導沒有天分的初學者...  感謝

    2018年3月9日 上午 03:17

解答

  • 解法大致是前面回答的這樣。

    另外,我比較偏好用 String.IsNullOrEmpty 來判斷 textBox.Text 屬性

    String.IsNullOrEmpty 方法 (String)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 Pan_ty 2018年3月12日 上午 08:09
    2018年3月10日 上午 12:08
    版主
  • 若要檢查資料夾有沒有存在, 直接用 Directory.Exists() 就可以啦, 例如:

       public Form1()
            {
                InitializeComponent();
    
                //+ CheckBox_CheckedChanged 事件
                foreach (Control Ctl in groupBox1.Controls)
                {
                    if (Ctl is CheckBox) ((CheckBox)Ctl).CheckedChanged += CheckBox_CheckedChanged;
                }
                //+ textBox1_TextChanged 事件
                textBox2.TextChanged += textBox1_TextChanged;
                //更新介面
                RefrUI();
            }
    
            private void CheckBox_CheckedChanged(object sender, EventArgs e)
            {
                RefrUI();
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                RefrUI();
            }
    
            private void RefrUI()
            {
                //下面程式只是簡單 demo, 應該還可以再精簡優化
                bool result = false;
                foreach (Control Ctl in groupBox1.Controls)
                {
                    if ((Ctl is CheckBox) && ((CheckBox)Ctl).Checked)
                    {
                        result = true;
                    }
                }
                result &= Directory.Exists(textBox2.Text);
    
                groupBox2.Enabled = result;
                button_OK.Enabled = result;
            }
    
    


    Ader

    • 已標示為解答 Pan_ty 2018年3月12日 上午 03:01
    2018年3月12日 上午 02:23

所有回覆

  • 沒看到你的Code,猜你要的是這個。

    checkbox的判斷寫這 && textBox1.Text == string.Empty;

    2018年3月9日 上午 08:15
  • 以下延伸自上次 Bill 前輩給您的 sample, 供參考:

    public Form1()
            {
                InitializeComponent();
    
                //+ CheckBox_CheckedChanged 事件
                foreach (Control Ctl in groupBox1.Controls)
                {
                    if (Ctl is CheckBox) ((CheckBox)Ctl).CheckedChanged += CheckBox_CheckedChanged;
                }
                //+ textBox1_TextChanged 事件
                textBox1.TextChanged +=textBox1_TextChanged;
                //更新介面
                RefrUI();
            }
    
            private void CheckBox_CheckedChanged(object sender, EventArgs e)
            {
                RefrUI();
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                RefrUI();
            }
    
            private void RefrUI()
            {
                //下面程式只是簡單 demo, 應該還可以再精簡優化
                bool result = false;
                foreach (Control Ctl in groupBox1.Controls)
                {
                    if ( (Ctl is CheckBox) && ((CheckBox)Ctl).Checked)
                    {
                        result = true;                    
                    }
                }
                result &= textBox1.TextLength > 0;
    
                groupBox2.Enabled = result;
                button1.Enabled = result;
            }
    


    Ader

    2018年3月9日 上午 09:25
  • 解法大致是前面回答的這樣。

    另外,我比較偏好用 String.IsNullOrEmpty 來判斷 textBox.Text 屬性

    String.IsNullOrEmpty 方法 (String)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 Pan_ty 2018年3月12日 上午 08:09
    2018年3月10日 上午 12:08
    版主
  • private void textBox2_TextChanged(object sender, EventArgs e)
            {     

                if (string.IsNullOrEmpty(textBox2.Text))  //判斷textBox2.Text如果沒有輸入
                {
                    button_OK.Enabled = false; //button無法使用
                }
                else
                {               
                    FileInfo filp = new FileInfo(textBox2.Text); //將textBox2.Text 輸入的視為資料夾
                    string textBox2_filp = filp.DirectoryName;    //資料夾路徑

                    if (Directory.Exists(textBox2_filp))   //如果資料夾存在
                        button_OK.Enabled = true;     //button可以點選

                    else  //如果資料夾不存在
                        button_OK.Enabled = false;  //button無法點選                  
                }
            }

    

     這是我目前的code 但是我發現 如果我在textBox2.Text輸入不是資料夾的路徑時

     button也會變得可以點選,但我希望的是沒有輸入或輸入的不是路徑時無法點選

    請高手指導、糾正  感謝~
    2018年3月12日 上午 02:21
  • 若要檢查資料夾有沒有存在, 直接用 Directory.Exists() 就可以啦, 例如:

       public Form1()
            {
                InitializeComponent();
    
                //+ CheckBox_CheckedChanged 事件
                foreach (Control Ctl in groupBox1.Controls)
                {
                    if (Ctl is CheckBox) ((CheckBox)Ctl).CheckedChanged += CheckBox_CheckedChanged;
                }
                //+ textBox1_TextChanged 事件
                textBox2.TextChanged += textBox1_TextChanged;
                //更新介面
                RefrUI();
            }
    
            private void CheckBox_CheckedChanged(object sender, EventArgs e)
            {
                RefrUI();
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                RefrUI();
            }
    
            private void RefrUI()
            {
                //下面程式只是簡單 demo, 應該還可以再精簡優化
                bool result = false;
                foreach (Control Ctl in groupBox1.Controls)
                {
                    if ((Ctl is CheckBox) && ((CheckBox)Ctl).Checked)
                    {
                        result = true;
                    }
                }
                result &= Directory.Exists(textBox2.Text);
    
                groupBox2.Enabled = result;
                button_OK.Enabled = result;
            }
    
    


    Ader

    • 已標示為解答 Pan_ty 2018年3月12日 上午 03:01
    2018年3月12日 上午 02:23