создайте таможенное событие для последовательности c#

У меня есть следующее:

   using System.Data;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Security.Permissions;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

        namespace FarmKeeper.Forms
    {
        public partial class FarmLogs : Form
        {
            static string errorLogText = "";
            public string changedText = "";

            public FarmLogs()
            {
                InitializeComponent();

                string txtLoginLogPath = @"../../Data/LoginLog.txt";
                StreamReader readLogins = new StreamReader(txtLoginLogPath);
                txtLoginLog.Text = readLogins.ReadToEnd();
                readLogins.Close();

                loadLogs();

                changedText = errorLogText;

                txtErrorLog.Text = changedText;
            }

            public static void loadLogs()
            {
                string txtErrorLogPath = @"../../Data/MainErrorLog.txt";
                StreamReader readErrors = new StreamReader(txtErrorLogPath);
                errorLogText = readErrors.ReadToEnd();
                readErrors.Close();
            }
        }
    }

Теперь, то, что я хочу сделать, должно проверить если последовательность, changedText, измененный. Я знаю немного о таможенных событиях, но я просто не могу понять это, ни один те в Интернете.

ЕСЛИ измененный changedText, то установленный другой textbox в ту последовательность.

1
nl ja de
просто внизу laodLogs ();
добавлено автор Frederik Moller, источник
Где-то в другом месте у меня есть код, который пишет файлу, когда ошибка происходит. Так, в loadLogs() метод, где LogText readError = новый StreamReader (txtErrorLogPath), это изменится каждый раз, когда ошибка произошла. Это проверено и работа. Но теперь, я хочу, чтобы textbox автоматически обновил каждый раз, когда измененный changedText
добавлено автор Frederik Moller, источник
Как может changedText изменение? Нет никакого кода здесь, который изменяет его.
добавлено автор Jon, источник
That' s конструктор, устанавливающий значение однажды. Как это собирается измениться впоследствии?
добавлено автор Jon, источник

1 ответы

Замените свою область собственностью и проверку, если стоимость изменяется у сеттера. Если это изменяется, поднимите событие. Есть интерфейс для имущественного названного уведомления об изменениях INotifyPropertyChanged:

public class Test : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string myProperty;

    public string MyProperty
    {
        get
        {
            return this.myProperty;
        }

        set
        {
            if (value != this.myProperty)
            {
                this.myProperty = value;

                if (this.PropertyChanged != null)
                {
                    this.PropertyChanged(this, new PropertyChangedEventArgs("MyProperty"));
                }
            }
        }
    }
}

Просто приложите укладчика к PropertyChanged событие:

var test = new Test();
test.PropertyChanged += (sender, e) =>
    {
       //Put anything you want here, for example change your
       //textbox content
        Console.WriteLine("Property {0} changed", e.PropertyName);
    };

// Changes the property value
test.MyProperty = "test";
5
добавлено
Если необходимо использовать это довольно часто как в wpf viewmodel, я рекомендую создать базовый класс, который обращается со всей логикой.
добавлено автор Florian R., источник
Теперь то, как это работает...., куда я помещаю код, чтобы установить textbox, равняется собственности?
добавлено автор Frederik Moller, источник
АХ! ohkay охлаждаются, это работает.thank you:)
добавлено автор Frederik Moller, источник
@Bebbie7 я отредактировал ответ с примером
добавлено автор ken2k, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot