ソートされたDataGridview入力を作成します。次のコードスニペットではそれをカットしていません。たとえ私がgrd.Refreshを置いても、datagridviewは更新された値を表示しません。矢印キーを押してもう一度上がると、グリッドがリフレッシュされます。 datagridviewのコンテンツを強制的にリフレッシュできる他の方法はありますか?DataGridViewのコンテンツを強制的にリフレッシュする方法はありますか?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestSortedInput
{
public partial class Form1 : Form
{
DataTable _dt = new DataTable();
public Form1()
{
InitializeComponent();
grd.AllowUserToAddRows = false;
_dt.Columns.Add("sort", typeof(int));
_dt.Columns.Add("product", typeof(string));
_dt.DefaultView.Sort = "sort";
grd.DataSource = _dt;
}
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Insert)
{
if (e.Modifiers == 0)
{
var r = _dt.NewRow();
r["sort"] = _dt.DefaultView.Count + 1;
r["product"] = "";
_dt.Rows.Add(r);
}
else if (e.Alt)
{
var drv = this.BindingContext[_dt].Current as DataRowView;
int sort = (int)drv["sort"];
for (int i = _dt.DefaultView.Count - 1; i >= (int)drv["sort"] - 1; --i)
{
_dt.DefaultView[i]["sort"] = (int) _dt.DefaultView[i]["sort"] + 1;
}
var r = _dt.NewRow();
r["sort"] = sort;
_dt.Rows.Add(r);
grd.Refresh();
}
}
}//void
}
}
これは私の問題を解決しました。うわー、私は本当にそれを見落とした(drv.EndEdit)、私は呼び出すことに慣れていないと思います.EndEdit、それは私のサブクラス化されたフォームで自動化されています。どうもありがとう^ _ ^ – Hao