【问题标题】:Pass Array Values using Setter to 2nd Form使用 Setter 将数组值传递给 2nd Form
【发布时间】:2015-09-23 14:50:43
【问题描述】:
  • 我有 2 个表格
  • 我有一个填充了值的数据集
  • 我在表单1上查询ds并拉取结果,即1列信息
  • 此信息保存在表单 1 的数组中
  • 我想将此信息传递到第二个表单(表单 2)中的文本框中

有什么方法可以将信息从数组传递到我的第二个表单,而无需创建多个属性和设置器?

这是我的代码,目前我只传递 1 个值(列),因为我不知道如何传递多个值。

谢谢。

表格 1

    //
    //SEARCH BUTTON
    //
    private void searchBtn_Click(object sender, EventArgs e)
    {
        string searchFor = tbSearch.Text;
        int results = 0;
        DataRow[] returnedRows;

        returnedRows = ds.Tables["Table_Data_1"].Select("parlour_number='" + searchFor + "'");
        results = returnedRows.Length;

        if (results > 0)
        {
            foreach (DataRow returned in returnedRows)
            {
                MessageBox.Show(returned[1].ToString() + " " + returned[2].ToString());

                SearchResults frm2 = new SearchResults();
                frm2.ResultsProp = returned[1].ToString();
                frm2.Show();
            }
        }
        else
        {
            MessageBox.Show("No results found");
        }
    }

搜索结果(表二)

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

    private string getResults(string result)
    {
        return parlourTb.Text = result;
    }

    private string passedResult;
    public string ResultsProp
    {
        set { passedResult = getResults(value); }
    }
}

【问题讨论】:

    标签: c# arrays forms getter-setter


    【解决方案1】:

    您可以使用第二种形式的类构造函数传递值

    SearchResults frm2 = new SearchResults(returned[1].ToString());
    frm2.Show();
    

    以这种方式更新您的第二个表单:

    public partial class SearchResults : Form
    {
        private string passedResult;
    
        public SearchResults(string result)
        {
            passedResult = result;
            InitializeComponent();
        }    
    }
    

    最后,您可以添加一个加载事件以将值分配给文本框:

    private void SearchResults_Load(object sender, System.EventArgs e)
    {
        parlourTb.Text = passedResult;
    }
    

    编辑:传递多个值。

    List<string> results = new List<string>();
    
    foreach (DataRow returned in returnedRows)
    {
        MessageBox.Show(returned[1].ToString() + " " + returned[2].ToString());
        results.Add(returned[1].ToString());
    }
    
    SearchResults frm2 = new SearchResults(results);
    frm2.Show();
    

    第二种形式代码:

    public partial class SearchResults : Form
    {
        private List<string> passedResult;
    
        public SearchResults(List<string> results)
        {
            passedResults = results; // Then use your list.
            InitializeComponent();
        }    
    }
    

    【讨论】:

    • 实际上,是的,我看到你在那里做了什么,这对我有用,但我仍然很想知道我是否也可以为此使用 setter。
    • 是的,你可以,它仍然有效。但是,根据我对您的问题的理解,我会做一个字符串列表,然后将其全部传递给第二种形式。检查对我的答案的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    相关资源
    最近更新 更多