2013-11-04 63 views
1

我如何製作Panel.Validate()Panel.ValidateChildren()如何製作Panel.Validate()方法?

我需要這個,因爲我在我的面板上有一個工具條。我包含2個按鈕(保存並取消)。

保存應調用Panel.Validate()Panel.ValidateChilden()

取消不應該調用任何東西。編號: 更多的解釋是必要的。 面板上的文本框正在驗證用戶何時離開文本框。但是當我點擊保存按鈕時,用戶不會離開活動文本框。因此它沒有被驗證,允許他保存損壞的數據。我不想強迫他離開(通過將焦點設置爲另一個控件),因爲他可能想要在按下保存後繼續在文本框中輸入內容。

我現在通過調用Form.ValidateChildren()來處理它,當我點擊保存按鈕。它可以工作,但會驗證表單上的所有控件。不只是我面板中的那些。

private void button1_Click(object sender, EventArgs e) 
{ 
    if (ParentForm.ValidateChildren()) 
     this.Save(); 
    else 
     MessageBox.Show("Error in validating"); 
} 

EDIT2:

解決。 我只是使用containercontrol而不是Panel。它給了我我需要的東西。 (實際上我現在不知道這個控制)

+0

哪裏?我沒有在System.Windows.Forms.Panel中選擇任何Panel.ValidateChildren()。 [link] http://msdn.microsoft.com/en-us/library/System.Windows.Forms.Panel(v = vs.110).aspx – user1808976

+0

ValidateChildren是ContainerControl的一種方法,但Panel不是從ContainerControl,所以它不能調用這個方法。 – user1808976

回答

0

您將需要分配保存到驗證的事件處理程序。此時您正在查看代表和事件處理程序。 C#深度是一個很好的深入看看這個。但要開始在網上查找代表和事件處理程序。至於你到達驗證功能點時所做的事情,你必須確定你的情況下「驗證」的含義。

0
using System; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public class MyPanel : Panel 
    { 

     public bool Validate() 
     { 
      //What to write in here ? 
      return true; 
     } 

     public bool ValidateChildren() 
     { 
      foreach (Control c in this.Controls) 
      { 
       //What to write in here ? 
      } 
      return true; 
     } 

     public void Save() 
     { 
      if (Validate() && ValidateChildren()) 
      { 
       //Do something 
      } 
     } 

     private void Save_Click(object sender, System.EventArgs e) 
     { 
      Save(); 
     } 
     //something else 
    } 
} 

Here你可以看到如何在一個一個WinForms事件附加到一個控制。 Here你可以看到一個示例點擊事件。