Krokizo Ответов: 1

Могу ли я вызвать свой метод и использовать textbox1. text одновременно?


У меня есть это в моей форме :
private void button1_Click(object sender, EventArgs e)
       {
           RecordAndRead.Record();
       }


и это в другом классе:
public static void Record()
         {
             const string filePath= @"../../Notes.txt";

             using (StreamWriter record=new StreamWriter(filePath,true))
             {
                 string UserInput = textBox1.Text;
                 record.WriteLine(UserInput);
                 textBox1.Text = null;
                 System.Windows.Forms.MessageBox.Show("Your information has been saved");
             }
         }


Я не могу использовать свой метод, если он не статичен,но когда он статичен, я не могу получить доступ к textBo1.Text.
Как я могу это исправить?

Что я уже пробовал:

Я возвращаюсь назад и возвращаюсь из public static void и public void в свой метод записи, но он не исправляет оба.

Richard MacCutchan

Исправьте свой код так, чтобы метод не был статичным. Кроме того, захватите значение текстового поля в нестатическом методе, чтобы вы могли просто передать строку в запись.

1 Ответов

Рейтинг:
8

OriginalGriff

Если он находится в другом классе, то вы все равно не сможете получить доступ к текстовому полю, так как это нестатический (или экземпляр) член вашего класса формы, поэтому вам все равно нужен правильный экземпляр формы для доступа к нему. Вместо этого передайте данные другому классу через параметр метода:

public static string Record(string text)
    {
    const string filePath= @"../../Notes.txt";
    using (StreamWriter record=new StreamWriter(filePath,true))
        {
        string UserInput = text;
        record.WriteLine(UserInput);
        System.Windows.Forms.MessageBox.Show("Your information has been saved");
        text = null;
        }
    return text;
    }
Затем передайте ему данные, когда вы его вызовете:
private void button1_Click(object sender, EventArgs e)
    {
    textBox1.Text = RecordAndRead.Record(textBox1.Text);
    }