Код, который у вас есть, проблематичен по другим причинам (@CodyGray объясняет, почему, именно поэтому вы получаете StackOverflowException
), но в целом вы можете использовать свойство, чтобы разрешить доступ, не раскрывая фактическую TextBox
контролировать себя;см. эту страницу MSDN для подробностей, но например:
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
}
public string FormText
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}
}
}
Затем, чтобы использовать это свойство:
public void p()
{
Form1 f = new Form1();
f.FormText = "change text";
}
РЕДАКТИРОВАТЬ:
Поскольку в комментариях есть по крайней мере один придира и достаточный стимул для того, чтобы хотя бы один человек нашел этот пункт «отличным», я также предложу немного другой подход, все еще используя свойство...
Давайте представим, что цель состоит в том, что вы хотите set
текст в p
, мы просто вернем то, что нам нужно:
public string p()
{
return "change text";
}
Так что:
myFormReferenceSomewhereNotInPrintClass.FormText = myPrintClassInstance.p();
Или вы хотите get
, или использовать текст в p
:
public void p(string text)
{
//do your thing with the text
}
Так что:
myPrintClassInstance.p(myFormReferenceSomewhereNotInPrintClass.FormText);