Как передать строку в дочернюю форму? - PullRequest
0 голосов
/ 17 августа 2011

По сути, я пытаюсь сделать так: у меня есть строка в главной форме, которая извлекает ее значение из текстового поля.

Затем я генерирую модальную версию второй формы и хочу получить эту строку(или значение textbox1.text основных форм), используемое во второй форме для процессов.

Основная форма

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;




namespace Tool{

    public partial class MainForm : Form
    {
        public string hostname;
        public MainForm()
        {
            InitializeComponent();
            textBox1.Text = hostname;

        }
     public void btn_test_Click(object sender, EventArgs e)
        {
            string hostname = textBox1.Text;
            SiteForm frmsite = new SiteForm();
            frmsite.ShowDialog();


        }

    }
}

'Дочерняя форма

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

namespace Tool
{
    public partial class SiteForm : Form
    {
        public string hostname {get; set; }
        public SiteForm()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {
            label1.Text = this.hostname;
        }


    }
}

Любые предложения покак я могу это сделать?Я знаю, что должен быть более простой способ, извините, я все еще немного новичок и пытаюсь научить себя C # по ходу дела.

В результате я нажимаю на ярлык дочернего элемента формыпусто, поэтому я могу сделать вывод, что строка не проходит правильно между двумя формами.

Ответы [ 2 ]

2 голосов
/ 17 августа 2011

Самый простой способ - передать его в конструктор дочерней формы, например:

private string _hostname = "";

...

public SiteForm(string hostname)
{
    _hostname = hostname;
    InitializeComponent();
}
1 голос
/ 17 августа 2011

Попробуйте подключиться к событию Load вашей дочерней формы и задайте значение его свойства hostname в обработчике событий в главной форме.

 public void btn_test_Click(object sender, EventArgs e)
    {
        string hostname = textBox1.Text;
        SiteForm frmsite = new SiteForm();
        frmsite.Load += new EventHandler(frmsite_Load);
        frmsite.ShowDialog();
    }

 public void frmsite_Load(object sender, EventArgs e)
 {
       SiteForm frmsite = sender as SiteForm;
       frmsite.hostname = this.hostname;

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...