-2

全部。

我是 C# 的新手。我知道这是一个非常受欢迎的问题。但我不明白。我知道有一个错误,但在哪里?例如 - Form1 代码的第一部分包含私有变量测试,我需要在 Form2 中获取此变量的值。错误在哪里?

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;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string test = "test this point";
            Form2 dlg = new Form2();
            dlg.test = test;
            dlg.Show();
        }
    }
}

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;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public string test { get; set; }

        public Form2()
        {
            InitializeComponent();
            label1.Text = test;
        }
    }
}
4

4 回答 4

4

在您的 Form2 中,您使用的是公共属性,因为public您可以通过 form1 中的对象分配它。例如:

 private void button1_Click(object sender, EventArgs e)
        {
            Form2 dlg = new Form2();
            dlg.test = "test this point";
            dlg.Show();
        }

有几种方法可以在表格 2 中使用它,如果您只想设置标签的 text 属性,这将是最好的:

public partial class Form2 : Form
    {
        public string test 
        { 
           get { return label1.Text; }
           set { label1.Text = value ;} 
        }

        public Form2()
        {
            InitializeComponent();
        }
    }

如果需要,您还可以在属性的设置器中调用函数。

于 2012-05-09T10:16:16.493 回答
1

你是对的,这种问题已经被问过很多次了,版本略有不同......这是我过去提供的一些答案

这可能最接近您正在寻找的东西

通过方法调用获得值的一个答案

另一个,逐步创建两个表单并使用函数或 Getter(setter) 从另一个表单获取值

于 2012-05-09T13:13:16.567 回答
0

您没有在方法中的任何地方使用字符串测试。尝试这个:

private void button1_Click(object sender, EventArgs e)
{
    Form2 dlg = new Form2();

    dlg.Test = "test this point";

    dlg.Show();
}

查看您如何将值分配给TestForm2 对象上的属性dlg

注意:我对属性使用了大写Test字母,因为这是对属性名称样式的普遍共识。

于 2012-05-09T10:16:02.173 回答
0

test 是一个可用于Form2(最好是测试)的属性,而string test仅适用于Form1. 除非您分配它,否则它与该属性无关。

Form2 dlg = new Form2();
dlg.test = test; // this will assign it
dlg.Show();

现在Form2属性已经获得了将用于在Label

于 2012-05-09T10:19:59.947 回答