Вставить / заменить в список и локальную структуру - PullRequest
0 голосов
/ 20 февраля 2020

Таким образом, у меня есть точки, которые я добавляю к ListBox (x;y), и по какой-то причине функция, которую я использую вместо удаления элемента, который я заменяю, «сохраняет его» (без отображения при использовании точек останова и просмотра структур lb.items / local элементы) и в следующий раз, когда я добавляю или заменяю значение, значение которого равно x, равному элементу, который застрял в части, я проверяю, добавлено ли это значение или если вы добавляете другое значение, элемент, который должен был быть заменен показывает вверх.

int index = _lbMaskPoints.SelectedIndex;
string sel = _lbMaskPoints.SelectedItem.ToString();
string[] values = sel.Split(new string[] { DELIMITER }, StringSplitOptions.RemoveEmptyEntries);
double currentF = Convert.ToDouble(values[0], CultureInfo.InvariantCulture);
double fVal= Convert.ToDouble(_tbPointFreq.Text.Trim().Replace(',', '.'), CultureInfo.InvariantCulture);
double newValue = Convert.ToDouble(_tbPointLevel.Text.Trim().Replace(',', '.'), CultureInfo.InvariantCulture);
// Console.WriteLine("newValue : " + newValue);
if (currentF != fVal)
{
    // freq changed                  
    // check if frequency already exists in dictionary                
    if (_maskPoints.ContainsKey(fVal))
    {
        fVal = double.NaN;
    }
    if (double.IsNaN(fVal))
    {
        // do nothing
        return;
    }
    // remove old value from dictionary
    _maskPoints.Remove(currentF);
    // add new
    _maskPoints.Add(fVal, newValue);
    // rearrange list so new value would be in right spot
    List<double> fList = new List<double>(_maskPoints.Keys);
    fList.Sort();
    _lbMaskPoints.Items.RemoveAt(index);
    int newIndex = fList.IndexOf(fVal);
    if (newIndex > _lbMaskPoints.Items.Count)
    {
        _lbMaskPoints.Items.Add(maskPointItem(fVal, newValue));
    }
    else
    {
        _lbMaskPoints.Items.Insert(newIndex, maskPointItem(fVal, newValue));
    }
    _lbMaskPoints.SelectedItems.Clear();
    _lbMaskPoints.SelectedIndex = newIndex;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...