公共变量调用不正确的结果

Sut*_*han 1 .net c#

public partial class ThanglishToTamilGUI : Form
{
    public string anz;

    public ThanglishToTamilGUI()
    {
        InitializeComponent();
    }       

    public void btnConvertToBraille_Click(object sender, EventArgs e)
    {
        anz = richTextBoxTamil.Text.ToString();

        GUI.TamilToBrailleGUI c1 = new GUI.TamilToBrailleGUI();
        c1.Visible = true;            
    }

}
Run Code Online (Sandbox Code Playgroud)

我需要将我的richtextbox(richTextBoxTamil)内容传递给变量调用anz.

我正在以其他形式重新启动anz变量作为表单加载事件:

    private void TamilToBrailleGUI_Load(object sender, EventArgs e)
    {
        ThanglishToTamilGUI tt = new ThanglishToTamilGUI();
        String apper = tt.anz;
        richTextBoxTamil.Text = apper;
    }
Run Code Online (Sandbox Code Playgroud)

我的问题: 结果是我得到空值.因为如果我分配了任何正确调用的值.

public partial class ThanglishToTamilGUI : Form
{
    public string anz = "Hai";

    public ThanglishToTamilGUI()
    {
        InitializeComponent();
    } ...
Run Code Online (Sandbox Code Playgroud)

这里我的ans值被传递为"Hai".但我的要求是获取richTextBoxTamil中的内容并将其传递给该公共变量调用anz.这里出了什么问题请帮助我.

谢谢.

Jon*_*eet 5

这就是问题:

ThanglishToTamilGUI tt = new ThanglishToTamilGUI();
String apper = tt.anz;
Run Code Online (Sandbox Code Playgroud)

apper除了null之外,你怎么看待它?你从新创建的表单中获取变量,这个表单从未显示过,而且从未btnConvertToBraille_Click调用过它.

据推测,某个地方存在一个现有 ThanglishToTamilGUI对象,那就是你要从中获取变量的对象.基本上,一种形式需要知道另一种形式的实例.

(我也强烈建议使用属性而不是公共变量,但这是另一回事.你甚至可能根本不需要一个单独的变量 - 只需声明一个获取的属性richTextBoxTamil.Text.)

或者,只需将相关字符串传递给表单的构造函数:

public void btnConvertToBraille_Click(object sender, EventArgs e)
{
    GUI.TamilToBrailleGUI c1 = new GUI.TamilToBrailleGUI(richTextBoxTamil.Text);
    c1.Visible = true;            
}
Run Code Online (Sandbox Code Playgroud)

然后新表单根本不需要知道旧表单 - 它只需要知道要显示的文本.

(您可能希望将其从构造函数中拉出并放入可设置的属性中,但它基本上是相同的原则:创建表单的代码会推送数据,而不是拉动它的新表单.)