установить видимость для textBox от form1 до form2 - PullRequest
0 голосов
/ 03 октября 2011

Из другой формы я хочу установить видимость для текстовых ящиков в этой форме, но я не знаю, как вызвать TextBoxes и установить свойство Visible = false.

Я пытаюсь с Enums, но я все еще не могу решитьпроблема.Я не могу бросить или сделать что-нибудь.Итак, как я могу вызвать textBox из form1 в form2 ...

Я использую C # и CF 3.5

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

это имена для всех моих TextBoxes.У меня есть текстовые поля с именами, такими как txtEan, txtPredmetObravnave, ..

Ответы [ 3 ]

1 голос
/ 03 октября 2011

Создайте новый класс с именем Globals.cs и напишите:

    public static Form1 MainForm;
    public static Form2 ChildForm;

, перейдите в Form1 и создайте событие: загрузка формы вставлена:

Globals.MainWindow = this;

и:

CheckForIllegalCrossThreadCalls = false;

и сделайте то же самое в Form2 с ChildForm, теперь вы можете вызывать form2 с помощью: Globals.ChildForm.TextBox1.Visible = false;

Редактировать: не забудьте сделать ваш текстовый ящик общедоступным.

1 голос
/ 03 октября 2011

Допустим, вы хотите установить Visible = false для textbox1 формы1

, когда вы создаете экземпляр form2, тогда вы должны передать экземпляр 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);
    }

}

Надеюсь, это поможет вам

1 голос
/ 03 октября 2011

Как насчет написания на 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;
        }
}
...