添加列:
DataGridViewColumn column = new DataGridViewColumn()
设置column属性如:column.HeaderText = "列名"
dgv1.columns.add(column)
添加行:
DataGridViewRow row = new DataGridViewRow()
设置row属性
dgv1.rows.add(row)
(一)。自适应窗体的代码:
using System
using System.Windows.Forms
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//1.声明自适应类实例
AutoSizeFormClass asc = new AutoSizeFormClass()
public Form1()
{
InitializeComponent()
//如果加入"皮肤",则不能在Form1_Load中记录控件的大小和位置,因为有些控件如dataGridView的子控件还未完成
//而要在在Form1_SizeChanged中,第一次改变时,记录控件的大小和位置
this.skinEngine1.SkinFile = "EmeraldColor1.ssk"
}
//2. 为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件的初始位置和大小
private void Form1_Load(object sender, EventArgs e)
{
// asc.controllInitializeSize(this)
}
//3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应
private void Form1_SizeChanged(object sender, EventArgs e)
{
asc.controlAutoSize(this)
// this.WindowState = (System.Windows.Forms.FormWindowState)(2)//记录完控件的初始位置和大小后,再最大化
}
}
}
(二)。自适应类的代码
using System.Collections.Generic
using System.Windows.Forms
namespace WindowsFormsApplication1
{
class AutoSizeFormClass
{
//(1).声明结构,只记录窗体和其控件的初始位置和大小。
public struct controlRect
{
public int Left
public int Top
public int Width
public int Height
}
实际 *** 作起来可能没有你想象的那么简单,你需要响应Form Resize之类的事件,然后根据事件,实时逐个调整控件的大小。在WPF中就简单多了。
1. 先获取DataGridView中的数据,转换成DataTable类型;2. 将新增的行数据添加到DataTable中;
3. 将DataTable中的数据批量更新到MySQL中;
4. 将DataTable中的数据更新到DataGridView中;
下面是示例代码:
// 获取DataGridView中的数据
DataTable dt = (DataTable)dataGridView1.DataSource
// 添加新行
DataRow dr = dt.NewRow()
dr["Name"] = "John"
dr["Age"] = 25
dt.Rows.Add(dr)
// 更新MySQL
string connStr = "Server=xxxDatabase=xxxUid=xxxPwd=xxx"
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open()
using (MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM tbl_user", conn))
{
MySqlCommandBuilder cb = new MySqlCommandBuilder(da)
da.Update(dt)
}
conn.Close()
}
// 更新DataGridView
dataGridView1.DataSource = dt
dataGridView中没有针对某一行的按钮进行分配事件的方法。所以我们只能够使用dataGridView的CellContentClick事件来进行处理
根据名称就知道,这是一个“单元格内容点击”事件。
然后在事件中,我们进行各种相关的处理:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
DataGridViewColumn column = dataGridView1.Columns[e.ColumnIndex]
if (column is DataGridViewButtonColumn)
{
DataGridViewRow newRow = new DataGridViewRow()//新建行
dataGridView1.Rows.Insert(e.RowIndex+1, newRow)//向点击行的下方插入行
int i=0
for (i <dataGridView1.Rows[e.RowIndex].Cells.Counti++)
{
dataGridView1.Rows[e.RowIndex + 1].Cells[i].Value = dataGridView1.Rows[e.RowIndex].Cells[i].Value//把点击行的内容复制到新行;
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)