Как правильно редактировать текст в объектном представлении? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть просмотр списка объектов с 4 столбцами и динамическим числом строк, я борюсь с программируемым редактированием значения текста в ячейке и, при желании, могу изменить цвет переднего плана

Я прочитал все, что мог, но не смог найти ни одного правильного и правильного примера того, как это сделать.

ObjectListView создан вот почему

List<VideoItem> list = new List<VideoItem>();
foreach (dynamic item in VideoItems)
{
    list.Add(new VideoItem { Index = (int)item.index, OldName = (string)item.oldname, NewName = (string)item.newname });
}


olv1.AddObjects(list);

Класс VideoItem выглядит следующим образом

private class VideoItem
{
    public int Index;
    public string OldName;
    public string NewName;
}

enter image description here

Ответы [ 2 ]

1 голос
/ 28 марта 2019

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

Вы должны сохранить результат (внести изменения) в базовый объект модели и затем вызвать RefreshObject (myModelObject);

О цвете, мне нужно изменитьтолько ячейка, которую я изменил

"Чтобы изменить форматирование отдельной ячейки, нужно установить для UseCellFormatEvents значение true и затем прослушивать события FormatCell."

Посмотрите при этом .

0 голосов
/ 29 марта 2019

Просто чтобы добавить к Rev1.0 Ответ, мне нужно было обновить объект, содержащий элементы (в моем случае это Список), затем использовать olv1.RefreshObject(list); flow by olv1.BuildList(true); olv1.BuildList(true); немедленно обновляет графический интерфейс.

здесь небольшой фрагмент кода, чтобы сделать вещь немного яснее это изменяет данные в столбце 3, когда флажок установлен.

using System.Collections.Generic;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Initializeolv();
        }

        private class VideoItem
        {
            public int Index;
            public string OldName;
            public string NewName;
        }
        private List<VideoItem> list = new List<VideoItem>();
        private void Initializeolv()
        {

            for (var i = 1; i <= 10; i++)
            {
                list.Add(new VideoItem { Index = i, OldName = $"old{i}", NewName = $"new{i}" });
            }


            olv1.AddObjects(list);


        }

        private void olv1_ItemChecked(object sender, ItemCheckedEventArgs e)
        {
            list[e.Item.Index].NewName = "new200";


            olv1.RefreshObject(list);
            olv1.BuildList(true);


        }

    }
}
...