Как передать ссылку на объект формы (например, TextBox) в класс, чтобы я мог указать, с каким текстовым полем должен работать этот экземпляр при создании этого экземпляра?Конкретный пример: у меня есть класс, который обрабатывает некоторые текстовые строки.У меня есть несколько экземпляров этого класса.У меня также есть несколько текстовых полей в моей форме.У меня есть метод в классе, который показывает некоторый текст в текстовом поле.Что мне нужно сделать, чтобы сообщить конкретному экземпляру моего класса, какое текстовое поле использовать при создании этого экземпляра?Должно быть в конструкторе, что-то вроде:
public MyClass (строка textString, / ссылка на текстовое поле /)
Это мой класс:
public class LogClass
{
private readonly TextBox _textBox;
private string logText;
public string LogText
{
get
{
return logText;
}
set
{
logText = value;
}
}
public void AddToLog(string textString)
{
try
{
if (string.IsNullOrEmpty(textString))
{
throw new ArgumentException("message", nameof(textString));
}
logText = logText+ "\n" + textString;
_textBox.Text = logText;
}
catch (Exception)
{
throw;
}
}
public LogClass(string initialText, TextBox textBox)
{
logText = initialText;
_textBox = textBox;
_textBox.Text = logText;
}
}
А это моя форма:
public partial class LogWindow : Form
{
LogClass myLog = new LogClass("this is initial string", logOutputBox);
public LogWindow()
{
InitializeComponent();
}
public string LogTextToPass {
get { return logOutputBox.Text; }
set { logOutputBox.Text = value; }
}
private void buttonWriteLog_Click(object sender, EventArgs e)
{
myLog.AddToLog(inputText.Text);
}
private void logOutputBox_TextChanged(object sender, EventArgs e)
{
}
}
Ошибка CS0236 в этой строке:
LogClass myLog = new LogClass("this is initial string", logOutputBox);
Ошибка CS0236 Инициализатор поля не может ссылаться на нестатическое поле, метод,или свойство LogWindow.logOutputBox выделено logOutputBox