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;
}
}
我需要将我的richtextbox(richTextBoxTamil)内容传递给变量调用anz。
我正在以其他形式重新启动anz变量作为表单加载事件:
private void TamilToBrailleGUI_Load(object sender, EventArgs e)
{
ThanglishToTamilGUI tt = new ThanglishToTamilGUI();
String apper = tt.anz;
richTextBoxTamil.Text = apper;
}
我的问题: 我得到的是null值。因为如果我分配了任何正确调用的值。
public partial class ThanglishToTamilGUI : Form
{
public string anz = "Hai";
public ThanglishToTamilGUI()
{
InitializeComponent();
} ...
这里我的ans值被传递为“Hai”。但我的要求是获取richTextBoxTamil中的内容并将其传递给该公共变量调用anz。这里出了什么问题请帮助我。
谢谢。
答案 0 :(得分:5)
这是问题所在:
ThanglishToTamilGUI tt = new ThanglishToTamilGUI();
String apper = tt.anz;
您如何期望apper
成为除null以外的任何东西?您从新创建的表单中获取变量,该表单从未显示过,并且从未调用过btnConvertToBraille_Click
。
据推测,某处有一个现有的 ThanglishToTamilGUI
对象,而是你要从中获取变量的对象。基本上,一个表单需要知道另一个表单的实例。
(我也强烈建议使用属性而不是公共变量,但这是另一回事。你可能根本不需要一个单独的变量 - 只需声明一个提取richTextBoxTamil.Text
的属性。 )
或者,只需将相关字符串传递给 new 表单的构造函数:
public void btnConvertToBraille_Click(object sender, EventArgs e)
{
GUI.TamilToBrailleGUI c1 = new GUI.TamilToBrailleGUI(richTextBoxTamil.Text);
c1.Visible = true;
}
然后新表单根本不需要了解旧表单 - 只需要知道要显示的文本。
(您可能希望将其从构造函数中拉出并放入可设置的属性中,但它基本相同:创建表单的代码会推送数据,而不是拉动它的新表单。)
答案 1 :(得分:0)
您可以创建公共属性来访问文本框的当前Text值。
public string RichTextBoxText
{
get
{
return richTextBoxTamil.Text;
}
}
现在,您可以实例化表单,但不会触发click事件。因此,除了初始化字段之外,你无法获得任何其他内容。
加载不是查找用户输入的地方。您需要检查属性值的事件(如点击):
private void SomeClick(object sender, EventArgs e)
{
String result = thanglishToTamilGUIObject.RichTextBoxText;
//do something with text
}