WinForms 應用:一個 DataGridView 兩列,一個 TextBox 輸入數字,點擊 Button 將數字添加為新行第一列,第二列留空,實現簡單記錄器。
dataGridView1:預先添加兩列(DataGridViewTextBoxColumn),AllowUserToAddRows = falsetextBox1:輸入數字button1:點擊添加private void button1_Click(object sender, EventArgs e)
{
// 1. 獲取並驗證輸入
string input = textBox1.Text.Trim();
if (string.IsNullOrEmpty(input))
{
MessageBox.Show("請輸入數字");
return;
}
if (!decimal.TryParse(input, out _))
{
MessageBox.Show("請輸入有效數字");
return;
}
// 2. 添加新行並獲取行索引
int rowIndex = dataGridView1.Rows.Add();
DataGridViewRow newRow = dataGridView1.Rows[rowIndex];
// 3. 設置單元格值
newRow.Cells[0].Value = input; // 第一列:輸入的數字
newRow.Cells[1].Value = string.Empty; // 第二列:留空
// 4. 清空輸入框並聚焦
textBox1.Clear();
textBox1.Focus();
// 5. 可選:自動滾動到新行
dataGridView1.FirstDisplayedScrollingRowIndex = rowIndex;
}
// 定義數據模型
public class RecordItem
{
public string Number { get; set; }
public string Remark { get; set; }
}
// 窗體字段
private BindingList records = new BindingList();
// 初始化綁定
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = records;
// 假設兩列 DataPropertyName 分別為 "Number" 和 "Remark"
}
// Button 事件(綁定模式)
private void button1_Click(object sender, EventArgs e)
{
if (decimal.TryParse(textBox1.Text.Trim(), out _))
{
records.Add(new RecordItem { Number = textBox1.Text.Trim(), Remark = "" });
textBox1.Clear();
textBox1.Focus();
}
}
| 屬性 | 建議值 | 說明 |
|---|---|---|
| AllowUserToAddRows | false | 禁用底部新行佔位符 |
| AutoGenerateColumns | false | 手動定義列,配合 DataPropertyName |
| SelectionMode | FullRowSelect | 整行選中 |
| ReadOnly | true/false | 按需設置,手動添加行建議 false |
| EditMode | EditOnEnter | 方便直接編輯 |
// ❌ 錯誤:Rows.Add() 返回 int (新行索引),不是 Row 對象
DataGridViewRow row = dataGridView1.Rows.Add();
// ✅ 正確:先 Add 獲取索引,再通過索引取行
int idx = dataGridView1.Rows.Add();
DataGridViewRow row = dataGridView1.Rows[idx];
dataGridView1.Columns.Count == 2Cells[0]、Cells[1]Value 接受 object,字符串、數字均可DataPropertyName 為數值類型,賦值字符串會自動轉換或報錯可從此處下載完整 VS 解決方案:
DataGridView手動添加行演示
綁定模式(BindingList)優於直接操作 Rows:分離數據與視圖,支持排序、篩選、雙向同步,代碼更簡潔且易維護。新手建議直接掌握綁定模式。