【发布时间】:2014-01-12 02:21:39
【问题描述】:
试试这个...
创建Form1,不改变大小,添加一个dataGridView1并将其锚点设置为左上右,然后...
public class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.AutoGenerateColumns = true;
var source = new BindingList<Comic>(GetComics());
dataGridView1.DataSource = source;
}
private List<Comic> GetComics()
{
var comics = new List<Comic>();
comics.Add(new Comic() { id = "1", title = "IronMan", editr = "LayneBooks", pages = 65, owned = true });
comics.Add(new Comic() { id = "2", title = "The Hulk", editr = "LayneBooks", pages = 48, owned = false });
comics.Add(new Comic() { id = "3", title = "Superman", editr = "DCCore", pages = 72, owned = true });
return comics;
}
// Custom class, source for grid
private class Comic
{
public string id { get; set; }
public string title { get; set; }
public string editr { get; set; }
public int pages { get; set; }
public bool owned { get; set; }
}
正如我们所知,我们可以使用箭头键或 Tab 键(当 StandardTab = false 时)从一个单元格转到另一个单元格,然后使用 Ctrl + 箭头键到达网格角落。
这段代码一切正常,单元格被聚焦并用键选择,但是当手动更改列宽时,不可见的单元格被聚焦,但不显示。
例如,使用上面的代码,如果将第一列和第二列的宽度缩小到其原始大小的 20 - 30%,则按 Ctrl + 右键时无法到达右上角。
如果第三列宽度也减小了,并且我们尝试使用右键(或 Tab)到达最后一列,则单元格被聚焦,但没有完全(或绝对)显示。
如何解决这个问题?更改列宽并获得与自动生成时相同的行为。有没有我遗漏的财产?
我的目标是使用按键浏览单元格,并在按下 Keys.Apps 时显示上下文菜单,但如果单元格不可见,则无法执行此操作。
谢谢!
【问题讨论】:
标签: c# datagridview width datagridviewcolumn