Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > динамический DataGridView - помогите разобраться!


Автор: kostyan1 28.11.2008, 13:08
Господа, начал осваивать месный грид - помогите разобраться!
Задача такая: таблица с шапкой + одна строка. Таблица сугубо месная - массив, с базами никак не связанна.
Размеры грида-колонок-ячеек фиксированные не меняются.
В процессе работы первая ячейка строки тож неизменна - меняться будет текст и цвет остальных ячеек строки в зависимости от всякого.
Посидев полистав форум слабал незатейливый пример:

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private DataGridView m_dgwTSGrid;
        private static int[] m_tsArray = new int[24];

        public Form1()
        {
            InitializeComponent();
        }
        private DataTable createTSDataTable()
        {
            DataTable table = new DataTable("Состояние каналов");
            DataColumn firstColumn = new DataColumn("Канал", typeof(string));
            table.Columns.Add(firstColumn);

            for (int i = 1; i <= 24; i++)
            {
                DataColumn column = new DataColumn(i.ToString(), typeof(int));
                table.Columns.Add(column);
            }
            return table;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            m_dgwTSGrid = new DataGridView();
            m_dgwTSGrid.DataSource = createTSDataTable(); ;

            Controls.Add(m_dgwTSGrid);

            foreach (DataGridViewColumn column in m_dgwTSGrid.Columns)
            {
                if (column == m_dgwTSGrid.Columns[0])
                {
                    column.Width = 50;
                }
                else
                {
                    column.Width = 30;
                }
            }

            m_dgwTSGrid.Rows[0].Cells[0].Value = "jopa";
            m_dgwTSGrid.Rows[0].Cells[0].Style.BackColor = Color.Gold;
            DataGridViewCellStyle style = new DataGridViewCellStyle(); // Стиль
            style.BackColor = Color.Silver; // Задний фон
            style.ForeColor = Color.Blue; // передний фон(цвет текста)
            style.SelectionBackColor = Color.Silver; //  задний фон при выделении
            style.SelectionForeColor = Color.White; // передний фон при выделении

            m_dgwTSGrid.Rows[0].DefaultCellStyle = style;

            for (int i = 0; i < 24; i++)
            {
                int iValue = m_tsArray[0];
                DataGridViewCell cell = m_dgwTSGrid.Rows[0].Cells[i + 1];
                cell.Value = iValue;
                if (iValue == 0)
                {
                    cell.Style.BackColor = Color.Lime;
                }
                else
                {
                    cell.Style.BackColor = Color.Red;
                }

            }

            m_dgwTSGrid.RowHeadersVisible = false;
            m_dgwTSGrid.AllowUserToDeleteRows = false;
            m_dgwTSGrid.AllowUserToResizeColumns = false;
            m_dgwTSGrid.AllowUserToResizeRows = false;
            m_dgwTSGrid.ReadOnly = true;
            m_dgwTSGrid.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;

            int width = 24 * 30 + 50 + 3;
            m_dgwTSGrid.Size = new Size(width, 100);
        }
    }
}


Тут вопросы такие:

1) Если я не в Form1_Load помещаю инициализацию грида а в конструктор, то после строчки
 Controls.Add(m_dgwTSGrid);
не наблюдаю рядов у грида (строки).

2) Ладно инициализирую как есть.
В итоге строка форматируется только цветом - старательно заданные мною циферьки не выводятся.
А если в полученом гриде нажимаю на шапку таблицы - исчезают и все цвета.
Что это за безобразие такое, как поправить?

Автор: QryStaL 28.11.2008, 13:27
Цитата(kostyan1 @  28.11.2008,  13:08 Найти цитируемый пост)
Посидев полистав форум слабал незатейливый пример

Лучше МСДН полистайте )))

Автор: kostyan1 28.11.2008, 14:48
спасибо, а ведь действительно жизнь наладилась  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)