2011-10-03 72 views
0

從其他窗體我想爲此窗體上的文本框設置可見性,但我不知道如何調用TextBoxes並設置屬性Visible = false。設置文本框從form1到form2的可見性

我嘗試使用枚舉,但我仍然無法解決問題。我無法施放或做任何事情。所以,我怎麼能叫的textBox從Form1以窗口2 ...

我使用C#和CF 3.5

public enum VnosTextBoxType 
    { 
     Ean, PredmetObravnave, Tse, Kolicina, EnotaMere, 
     Lokacija, Zapora, Sarza, SarzaDobavitelja, Datumod, 
     DatumDo 
    } 

這是我所有的文本框的名稱。我有喜歡txtEan,txtPredmetObravnave名稱文本框,..

+0

你究竟打算如何使用枚舉來解決這個問題? – Raghu

+0

與一些處理程序 – senzacionale

+0

所以this.textBox1.Visibe = other.textBox1.Visible;不這樣做? – Akku

回答

1

什麼Form2上寫的方法是這樣的:

public void SetTBVisible(string name, bool visible) 
{ 
    this.Controls[name].Visible = visible; 
} 

,並把這種形式的Form1中?

編輯:

public void SetTBVisible(string name, bool visible) 
{ 
    string cName = name.ToLower(); 
    foreach(Control c in this.Controls) 
     if (c.Name.ToLower() == cName) 
     { 
      c.Visible = visible; 
      break; 
     } 
} 
+0

只控制int。字符串不能分配給類型int – senzacionale

+0

它有一個接受字符串的重載? – V4Vendetta

+0

@ V4Vendetta:在正常的框架中,是的。我現在無法在CF上測試,但我認爲這並沒有什麼不同。我想這是:( – Marco

1

建立一個叫做Globals.cs 寫入新類:

public static Form1 MainForm; 
    public static Form2 ChildForm; 

去到Form1,使事件:形式負載 地說:

Globals.MainWindow = this; 

和:

CheckForIllegalCrossThreadCalls = false; 

與ChildForm 做相同的窗體2,現在你可以調用窗口2有:Globals.ChildForm.TextBox1.Visible = FALSE;

編輯:不要忘記讓你的文本框公開。

+0

thx爲您的答案和幫助 – senzacionale

1

比方說您要設置可見=假爲Form1

當你創建窗口2的情況下,那麼你必須Form1的實例傳遞到它的構造是這樣

Class Form1 : Form 
{ 
    public void setTextbox(bool val) 
    { 
     this.Textbox1.visible=val; 
    } 
    Public void showForm2() 
    { 
     Form2 f2= new Form2(this); 
     f2.show(); 
    }   
} 

Class Form2 : Form 
{ 
    Form1 f1; 

    public Form2(Form form1) 
    { 
     f1=form1; 
    } 

    public void setTb() 
    { 
    f1.setTextbox(false); 
    } 

} 

我希望這

的TextBox1中將幫助你

+0

thx爲您的答案和幫助 – senzacionale