Создайте проект «Windows Form» в «Microsoft Visual Studio», для этого откройте Microsoft Visual Studio 2010 и перейдите в меню: файл -> создать проект…
В открывшемся окне «Создать проект» в правой части «установленные шаблоны» выберете раздел Visual C# и подраздел Windows. Из предложенных шаблонов выберете «Приложение Windows Form». В нижней части окна введите имя вашего проекта и его расположение на вашем компьютере. После выполнения этих действий нажимаете кнопку «ОК» для выполнения процесса создания нового проекта. По завершению создания проекта у вас откроется главная форма вашего проекта.
добавьте компонент DataGridView на форму, для этого перейдите в меню: Вид -> панель элементов.
В правой части программы вы увидите новую панель с заголовком «Панель элементов». Найдите компонент DataGridView, сделайте клик левой клавишей мыши по компоненту и затем также клик левой клавишей мыши по вашей форме открытой при создании проекта.
Вы увидите размещенный компонент на форме, нажмите правой клавишей мыши по компоненту и выберете пункт «Свойства», из открывшегося контекстного меню.
У вас откроется окно со свойствами выбранного элемента управления, найдите свойство Dock и выберете вариант размещения компонента на форме Fill, данный параметр растягивает элемент управления на все рабочее пространство формы.
Выполните двойной щелчок левой клавишей мыши по заголовку формы.
У вас откроется новая вкладка с редактором кода вашей формы и методом Form1_Load, события Load, которое возникает каждый раз при запуске вашего проекта. Вставьте приведенный ниже код в тело данного метода, выполняющий заполнение тестовыми данными элемента управления «dataGridView».
private void Form1_Load(object sender, EventArgs e) { //Инициализируем новый экземпляр класса System.Data.DataTable и передаем //ему аргументы. DataTable dt = new DataTable(); //Создаем и добавляем объект System.Data.DataColumn с указанным именем dt.Columns.Add("Name"); dt.Columns.Add("Telephone"); dt.Columns.Add("City"); dt.Columns.Add("Country"); dt.Columns.Add("Adress"); //Задаем источник данных, для которого объект //System.Windows.Forms.DataGridView отображает данные. dataGridView1.DataSource = dt; //Задаем текст, используемый для подсказок. dataGridView1.Columns[0].ToolTipText = "Имя пользователя"; dataGridView1.Columns[1].ToolTipText = "Телефонный номер пользователя"; //Задаем текст ячейки заголовка столбца. dataGridView1.Columns[0].HeaderText = "Имя"; dataGridView1.Columns[1].HeaderText = "Телефон"; dataGridView1.Columns[2].HeaderText = "Город"; dataGridView1.Columns[3].HeaderText = "Страна"; dataGridView1.Columns[4].HeaderText = "Адрес"; SetColumnOrder(dataGridView1); }Для просмотра созданных колонок (столбцов) запустите проект, нажав на клавиатуре клавишу F5.
Далее необходимо создать новый класс в проекте, для этого в обозревателе решений сделайте клик правой клавишей мыши по названию вашего проекта и выберете из открывшегося контекстного меню, пункт Добавить-> Создать элемент…
У вас откроется новое окно «Создать элемент…» в котором выберете шаблон «Класс», задайте ему имя и нажмите кнопку «Добавить».
У вас откроется новая вкладка:
Удалите класс Settings и замените его два класса представленных ниже:
internal sealed class DataGridViewSetting : ApplicationSettingsBase { private static DataGridViewSetting _defaultInstace = (DataGridViewSetting)ApplicationSettingsBase.Synchronized(new DataGridViewSetting()); public static DataGridViewSetting Default { get { return _defaultInstace; } } [UserScopedSetting] [SettingsSerializeAs(SettingsSerializeAs.Binary)] [DefaultSettingValue("")] public Dictionary<string, List<columnorderitem>> ColumnOrder { get { return this["ColumnOrder"] as Dictionary<string, List<columnorderitem>>; } set { this["ColumnOrder"] = value; } } } [Serializable] public sealed class ColumnOrderItem { public int DisplayIndex { get; set; } public int Width { get; set; } public bool Visible { get; set; } public int ColumnIndex { get; set; } }Теперь переходим в код главного приложения и добавляем два метода, первый на сохранение, второй на загрузку настроек.
private void SaveColumnOrder(DataGridView name) { if (name.AllowUserToOrderColumns) { List<columnorderitem> columnOrder = new List<columnorderitem>(); DataGridViewColumnCollection columns = name.Columns; for (int i = 0; i < columns.Count; i++) { columnOrder.Add(new ColumnOrderItem { ColumnIndex = i, DisplayIndex = columns[i].DisplayIndex, Visible = columns[i].Visible, Width = columns[i].Width }); } DataGridViewSetting.Default.ColumnOrder[this.Name] = columnOrder; DataGridViewSetting.Default.Save(); } } private void SetColumnOrder(DataGridView name) { if (!DataGridViewSetting.Default.ColumnOrder.ContainsKey(this.Name)) return; List<ColumnOrderItem> columnOrder = DataGridViewSetting.Default.ColumnOrder[this.Name]; if (columnOrder != null) { var sorted = columnOrder.OrderBy(i => i.DisplayIndex); foreach (var item in sorted) { name.Columns[item.ColumnIndex].DisplayIndex = item.DisplayIndex; name.Columns[item.ColumnIndex].Visible = item.Visible; name.Columns[item.ColumnIndex].Width = item.Width; } } }Добавьте их вызов при запуске проекта и при его закрытии. Пример загрузки сохраненных настроек представлен ниже:
SetColumnOrder(dataGridView1);Так же делаете и для сохранения.
Ссылка для скачивания примера: Яндекс.Диск
Комментариев нет:
Отправить комментарий
Большая просьба, не писать в комментариях всякую ерунду не по теме!