Индикатор выполнения для DataGridViewColumn - PullRequest
2 голосов
/ 03 сентября 2011

Здесь Марк Ридоут, разработчик Microsoft, объясняет, как создать столбец индикатора выполнения в DataGridView, и предоставляет «простой» код для класса DataGridViewProgressColumn. Его инструкции о том, как использовать его для просмотра данных с привязкой к данным:

Если вы привязаны к данным, то вы можете просто изменить тип столбца целочисленного столбца, который имеет значения от 0 до 100.

Некоторые люди, включая меня, не понимают, что значит «изменить тип столбца целочисленного столбца, который имеет значения от 0 до 100» в случае с сеткой с привязкой к данным, и Марк, кажется, слишком занят, чтобы ответить. Кто-нибудь знает, как это делается?

Вот краткий пример моего дела:

namespace Sample
{
    public class Record
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Progress { get; set; } // This is the int 0-100 field which 
                                          // has data for a progress bar

        public Record()
        {
        }

        public Record(int id, string name, int progress)
        {
            this.Id = id;
            this.Name = name;
            this.Progress= progress;
        }
    }
}

namespace Sample
{
    public partial class SampleForm : Form
    {
        private BindingList<Record> records;

        public SampleForm()
        {
            InitializeComponent();
        }

        public SampleForm(BindingList<Record> records)
        {
            InitializeComponent();
            this.records = records;
        }

        private void SampleForm_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = this.records;
        }
    }
}

В какой момент именно я должен изменить тип столбца «Ход выполнения» на DataGridViewProgressColumn и как это сделать?

Ответы [ 3 ]

7 голосов
/ 03 сентября 2011

Как я понимаю, вам необходимо привязать столбцы такого типа к свойствам, которые имеют тип Int32 и могут иметь значения от 0 до 100 (в процентах).

Класс ввода данных:

class Data
{
    public int Progress { get; set; }
}

Привязка данных:

var data = new List<Data>() { 
    new Data() { Progress = 50 },
    new Data() { Progress = 60 },
    new Data() { Progress = 30 },
    new Data() { Progress = 92 },
};

this.dataGridView1.DataSource = data;

** Вот как это выглядит: **

Класс, описанный в статье, должен быть добавлен в проект перед сборкой столбцов в GridView.

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

Steps

enter image description here

enter image description here

enter image description here

0 голосов
/ 09 мая 2019

Это работает для меня, так что, возможно, это поможет кому-то ...

progressBar1.Bounds = dgv.GetCellDisplayRectangle(columnIndex, rowIndex, true);
0 голосов
/ 23 января 2015

Я использую VB.NET, прикрепленная ссылка в любом случае находится на C #, так что вам будет легко понять.После того как вы включите два класса, просто вызовите пространство имен в форме, создайте решение, затем добавьте элемент управления datagridview и добавьте столбец типа DataGridViewProgressColumn в элемент управления.Таким образом, вы можете использовать следующий код для заполнения элемента управления:

DataGridView1.Rows.Add(20)
DataGridView1.Rows.Add(20)

PS Мой пример кода в VB, но я уверен, что вы можете понять, что он эквивалентен для C #

...