ListBox не заполняется BindingSource - PullRequest
0 голосов
/ 08 марта 2020

Это приложение Winforms. Список lstEncrypted не заполняется, ошибки нет. ProcessText.Statistics работает просто отлично, зашифрованный получает список объектов, уже проверенных в отладчике. Я не знаю, что не так. Любые предложения будут оценены, спасибо !!

public partial class FormUI : Form
{

    List<CharItem> encrypted = new List<CharItem>();
    BindingSource encryptedBinding = new BindingSource();


    public FormUI()
    {
        InitializeComponent();

        encryptedBinding.DataSource = encrypted;
        lstEncrypt.DataSource = encryptedBinding;
        lstEncrypt.DisplayMember = "Display";
        lstEncrypt.ValueMember = "Display";
    }

    private void BtnStatisticsEncrypt_Click(object sender, EventArgs e)
    {

        encrypted = ProcessText.Statistics(txtBoxEncrypt.Text);

        encryptedBinding.ResetBindings(false);

    }

_

   public class CharItem
{
    public char Char { get; set; }
    public int Position { get; set; }
    public decimal Avg { get; set; }
    public string Display
    {
        get
        {
            return string.Format($"{Char}    ({Position})    {Avg}%");
        }
    }
}

1 Ответ

0 голосов
/ 08 марта 2020

CharItem необходимо реализовать INotifyPropertyChanged и инициировать событие изменения свойства в установщиках свойств. Примерно так:

public event PropertyChangedEventHandler PropertyChanged;  

private void NotifyPropertyChanged([CallerMemberName] String propertyName = null)  
{  
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

Затем, когда свойство изменяется, просто вызовите NotifyPropertyChanged() в установщике:

private string someData;
public string SomeData
{
    get { return someData; }
    set { someData = value; NotifyPropertyChanged(); }
}

Вы можете уведомить об изменении связанных свойств (например, Display в ваш пример), указав имя свойства из любого установщика:

NotifyPropertyChanged(nameof(Display));

Без этого никакие наборы свойств не будут замечены BindingSource, который не может уведомить любой связанный элемент управления для обновления .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...