任何人都标志着这是重复之前,PLZ注意,这是不一样的问题问在这里,这里和这里.
如果您有两个或更多个DataGridViewComboBoxColumn
,DataGridView
并且其中一个的下拉列表当前处于打开状态,则单击其他列的下拉按钮不会打开该下拉列表.相反,你仍然需要点击两次.首次单击会隐藏已打开的下拉列表,第二次单击实际上会打开您单击的下拉列表.
请注意,EditOnEnter
模式为ON 时需要两次单击; 否则你必须执行三次点击才能完成这项工作.我也尝试过ContentClick事件,没有任何好处.
那么当DataGridViewComboBoxColumn
我的网格中有多个操作时,如何使用一键操作?
以防万一有人想要重现它,这是一个过程:
转到Form1的代码并将其粘贴到InitializeComponent
行后面的构造函数中:
DataGridView dgv = new DataGridView();
DataGridViewComboBoxColumn col1 = new DataGridViewComboBoxColumn();
DataGridViewComboBoxColumn col2 = new DataGridViewComboBoxColumn();
dgv.Columns.AddRange(new DataGridViewColumn[] { col1, col2 });
dgv.Dock = DockStyle.Fill;
dgv.EditMode = DataGridViewEditMode.EditOnEnter;
col1.Items.AddRange(new object[] { "Cat", "Dog", "Elephant", "Lion" });
col2.Items.AddRange(new object[] { "Duck", "Hen", "Crow", "Sparrow" });
this.Controls.Add(dgv);
Run Code Online (Sandbox Code Playgroud)运行该项目.单击第一个下拉列表,然后单击另一个下拉列表而不关闭第一个下拉列表.它将需要2或3次点击(取决于您在第二个下拉列表中单击的位置)才能打开第二个列表.
可能的重复:
一键直接访问 DataGridView 组合框?
我确信这种行为是设计使然,但我觉得在很多情况下它并不直观。
如果您通过单击与当前所在行不同的一个单元格来将光标移动到新行,则第一次单击只会将您移动到该行并突出显示您单击的整个单元格。第二次单击会选择所有文本,就像您想要删除或覆盖它一样。第三次单击将最终将光标定位在您单击的文本内的位置。
有什么方法可以更改行为,以便用户可以移动到不同的行并在第一次或至少第二次单击后内联编辑现有文本?
Edit1:
所以下面给出的答案效果很好。Microsoft 讨论站点上的问题(如果启用了 EditOnEnter 模式则无法选择行)似乎已通过 Visual Studio 2008 得到解决。
我剩下的唯一问题是,当用户使用选项卡移至下一条记录或单击下一个单元格时,整个文本会立即被选中,这可能会导致无意的覆盖。有一个简单的解决办法吗?
Edit2:
您为 edit1 提供的解决方案确实有效,但有一个问题。第一次单击不同的单元格后,光标将始终位于文本的末尾。我不认为这真的是一个如此糟糕的问题,所以我不会担心尝试修复它。