На форме (c# winforms vs2010) есть dataGridView1 и dataGridView2. При запуске формы dataGridView1 заполняется из файла mdb. В dataGridView2 строки переносятся с помощью метода drag & drop из dataGridView1. Подскажите пожалуйста, можно ли с помощью класса "Props" (пример кода ниже) аналогично записывать (по кнопке) и считывать при запуске формы данные из dataGridView2? Другими словами, запоминать и считывать как настройку таблицу dataGridView2.
Создаем класс Props и прописываем туда следующий код
using System;
using System.Xml.Serialization;
using System.IO;
namespace XMLFileSettings
{
//Класс определяющий какие настройки есть в программе
public class PropsFields
{
//Путь до файла настроек
public String XMLFileName = System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("PROGRAM_NAME.exe", "") + "settings.xml";
//Чтобы добавить настройку в программу просто добавьте суда строку вида -
//public ТИП ИМЯ_ПЕРЕМЕННОЙ = значение_переменной_по_умолчанию;
public String TextValue = @"Testing XML File Settings";
public DateTime DateValue = new DateTime(2011, 1, 1);
public Decimal DecimalValue = 555;
public Boolean BoolValue = true;
}
//Класс работы с настройками
public class Props
{
public PropsFields Fields;
public Props()
{
Fields = new PropsFields();
}
//Запист настроек в файл
public void WriteXml()
{
XmlSerializer ser = new XmlSerializer(typeof(PropsFields));
TextWriter writer = new StreamWriter(Fields.XMLFileName);
ser.Serialize(writer, Fields);
writer.Close();
}
//Чтение настроек из файла
public void ReadXml()
{
if (File.Exists(Fields.XMLFileName)){
XmlSerializer ser = new XmlSerializer(typeof(PropsFields));
TextReader reader = new StreamReader(Fields.XMLFileName);
Fields = ser.Deserialize(reader) as PropsFields;
reader.Close();
}
else{}
}
}
}
Теперь, чтобы использовать настройки в своей программе сделаем следующее -
using System;
using System.Windows.Forms;
namespace XMLFileSettings
{
public partial class Form1 : Form
{
#region Settings action
Props props = new Props();
//Запись настроек
private void writeSetting()
{
props.Fields.TextValue = textBox1.Text;
props.Fields.DateValue = dateTimePicker1.Value;
props.Fields.DecimalValue = numericUpDown1.Value;
props.Fields.BoolValue = checkBox1.Checked;
props.WriteXml();
}
//Чтение настроек
private void readSetting()
{
props.ReadXml();
textBox1.Text = props.Fields.TextValue;
dateTimePicker1.Value = props.Fields.DateValue;
numericUpDown1.Value = props.Fields.DecimalValue;
checkBox1.Checked = props.Fields.BoolValue;
}
#endregion
#region Form Action
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
readSetting();
}
private void button2_Click(object sender, EventArgs e)
{
writeSetting();
}
#endregion
}
}
//Код формы:
namespace test
{
public partial class Form1 : Form
{
private OleDbConnection conn;
private OleDbConnectionStringBuilder sb;
DataTable table;
DataTable table2;
public Form1()
{
InitializeComponent();
sb = new OleDbConnectionStringBuilder();
sb.Provider = "Microsoft.Jet.OLEDB.4.0";
sb.DataSource = @"c:\base.mdb";
conn = new OleDbConnection(sb.ConnectionString);
this.dataGridView1.DataSource = FillTable("SELECT * FROM СПИСОК");
}
private DataTable FillTable(String sql)
{
table = new DataTable();
using (OleDbDataAdapter da = new OleDbDataAdapter(sql, conn))
{
da.Fill(table);
}
table2 = table.Clone();
this.dataGridView2.DataSource = table2;
return table;
}
private void dataGridView2_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(DataRow)))
{
var row = (DataRow)e.Data.GetData(typeof(DataRow));
table2.ImportRow(row);
}
}
private void dataGridView2_DragOver(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(DataRow)))
{
e.Effect = DragDropEffects.Copy;
}
}
private void dataGridView1_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Left && e.RowIndex >= 0 && e.RowIndex < table.Rows.Count)
{
dataGridView1.DoDragDrop(table.DefaultView[e.RowIndex].Row, DragDropEffects.Copy);
}
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
как записать в массив числа из textbox разделенных пробелом? Допустим, пользователь ввел 12 12 4 6 7 9 - получилось 6 элементов массива, b[0] = 12, b[1] = 12,
На форме есть tabControl, возможно ли в зависимости от переданного условия сделать одну из вкладок элемента не активной?