Господа, начал осваивать месный грид - помогите разобраться! Задача такая: таблица с шапкой + одна строка. Таблица сугубо месная - массив, с базами никак не связанна. Размеры грида-колонок-ячеек фиксированные не меняются. В процессе работы первая ячейка строки тож неизменна - меняться будет текст и цвет остальных ячеек строки в зависимости от всякого. Посидев полистав форум слабал незатейливый пример:
Код | 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) Ладно инициализирую как есть. В итоге строка форматируется только цветом - старательно заданные мною циферьки не выводятся. А если в полученом гриде нажимаю на шапку таблицы - исчезают и все цвета. Что это за безобразие такое, как поправить? |