Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Немодальный диалог


Автор: CORPORAL 17.8.2010, 22:50
Здравствуйте.
Вызываю немодальное окно и передаю текст:
Код

Form2 F2=null;
private void B_Click(object sender, EventArgs e)
        {
            /*если одна форма уже открыта, сначала закроем ее, 
           прежде чем открывать следующую*/
            if (F2 != null) F2.Close();
           F2 = new Reports(textBox_F1.Text);
            
            F2.Show();
           
        }

И в конструкторе немодальной формы:
Код

public F2(string txt)
        {
            InitializeComponent();
            TextBox_F2.Text=txt;
         
        }

не закрывая F2 я изменяю  textBox_F1.Text как мне обновить данные в немодальном окне?

Автор: Экскалупатор 17.8.2010, 23:45
CORPORAL, ответ очевиден на мой взгляд, сделай метод или свойство, во второй форме, и через него изменяй все что хочешь.

Автор: CORPORAL 18.8.2010, 20:48
Ха, я создавал функцию во второй форме для изменения текста и из первой вызывал , и текст не изменялся. При дебаге текст изменяется но на немодальной, открытой форме текст оставался прежний. Так как сделать так, чтаб я пишу в первой форме, а текст сразу писался во второй(немодальной)?

Автор: Экскалупатор 18.8.2010, 22:32
а у меня работает:
форма 1:
Код

 public partial class Form1 : Form
    {
        Form2 f2 = new Form2();
        int count = 1;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            f2.Show();            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            f2.SetText(string.Format("привет. ты нажал {0} раз.", count++));

        }
    }


форма2:
Код

public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }
        public void SetText(string Text)
        {
            this.textBox1.Text = Text;
        }
    }


в первой форме должна быть кнопка button1, во второй текстбокс textBox1 соответственно. не знаю что ты там делаешь, у меня при нажатии на кнопку в первой форме меняется текст в текстбоксе второй формы.
в файле пример.

Автор: CORPORAL 19.8.2010, 00:04
О, точно... спасибо. Почему у меня не работает?  Потому, что я отображаю не совсемь в текст боксе, а в ListView
Код

 public void updateReport(Double d)
        {

            foreach (ListViewItem i in table.Items)
            {
                i.SubItems.Add(d.ToString());
            }
            textBox1.Text = d.ToString();
            
        }

textBox1.Text = d.ToString(); - это работает, а вот в ListView не обновляется  smile 
Ой, так просто..... Экскалупатор, спасибо, что заставил поверить в то что оно работает  smile  (самому на текстбоксе не додумался проверить)
i.SubItems.Clear(); - надо добавить

Автор: Экскалупатор 19.8.2010, 07:40
да не за что, всегда пожалста...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)