在我的WinForms中,我有DataGridView
。我想一次选择完整行,因此我将SelectionMode
设置为FullRowSelect
。现在我遇到了问题,因为在开始时我的表单为第一行加下划线(所选行的集合为空,第一行未选中但仅加下划线)。我尝试过很多东西,比如:
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.ClearSelection();
}
所有都失败了,因为实际上没有选择。
如何摆脱这种下划线?
感谢您的帮助!
答案 0 :(得分:14)
这对我有用:
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.Rows[0].Selected = false;
}
答案 1 :(得分:12)
不幸的是,这些答案都没有帮助我,但我找到了其他解决方案。我将用这段代码隐藏它,而不是无法选择:
dataGridView1.DefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.BackColor;
dataGridView1.DefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor;
因此,如果有人想隐藏选择,那么它将会很好地运作。
干杯:)
答案 2 :(得分:12)
只需将dataGridView1.ClearSelection();
放入表单的加载事件中即可。
答案 3 :(得分:2)
您应该尝试插入已显示的事件datagridView.ClearCelection()
以及datagridView.CurrentCell=null
,例如,如果您想要选择要删除或更改信息的行,只需执行if(datagridView.CurrentCell==null){
MessageBox.Show("You must select row");}
它对我有用
答案 4 :(得分:2)
尝试这可能会有所帮助
line_ani = animation.FuncAnimation(fig1, update_line, 25, fargs=(data, l),
interval=50, blit=False)
答案 5 :(得分:1)
尝试在DataGridView.AllowUserToAddRows = false
之后在构造函数中设置InitializeComponent()
。
答案 6 :(得分:1)
你可以像这样在form_Load事件中调用dataGridView.ClearSelection()方法......
private void Form1_Load(object sender, EventArgs e)
{
// You will get selectedCells count 1 here
DataGridViewSelectedCellCollection selectedCells = dataGridView.SelectedCells;
// Call clearSelection
dataGridView.ClearSelection();
// Now You will get selectedCells count 0 here
selectedCells = dataGridViewSchedule.SelectedCells;
}
答案 7 :(得分:0)
这项工作对我来说是对数据绑定的明确选择
Protected Sub GridCancel_DataBinding(sender As Object, e As EventArgs) Handles GridCancel.DataBinding
GridCancel.SelectedIndex = -1
End Sub
答案 8 :(得分:0)
在开始时为禁用的选定行设置的事件是这样的, 并管理FLAG以停止ClearSelection
private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
if (FLAG==true)
{
dataGridView.ClearSelection();
FLAG=false;
}
}
答案 9 :(得分:0)
有时,当您在不关闭程序的情况下重新加载表单时,第一行将突出显示。但它不会被选中,并且您将获得选定行索引的-1。
你可以这样做:
1.在加载表单时存储默认样式:
onStop
2.与datagridview交互时更改单元格样式:
Public Class aRoots
Dim df1, df2, df3, df4 As Color
Private Sub aRoots_Load(sender As Object, e As EventArgs) Handles Me.Load
df1 = DGV_Root.DefaultCellStyle.SelectionBackColor
df2 = DGV_Root.DefaultCellStyle.BackColor
df3 = DGV_Root.DefaultCellStyle.SelectionForeColor
df4 = DGV_Root.DefaultCellStyle.ForeColor
3.在更改选择时将单元格样式更改为默认值,如cell_click或cell_double单击:
Private Sub LoadRoot()
For i = 0 To 5
DGV_Root.Rows.Add()
For j = 0 To 3
DGV_Root.Item(j, i).Value = ...
Next
Next
'DGV_Root.ClearSelection() ==> instead of this use 2 lines below
DGV_Root.DefaultCellStyle.SelectionBackColor = df2
DGV_Root.DefaultCellStyle.SelectionForeColor = df4
End Sub
4.当你想关闭表格时,将全部恢复为默认值:
Private Sub DGV_Root_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DGV_Root.CellMouseClick
DGV_Root.DefaultCellStyle.SelectionBackColor = df1
DGV_Root.DefaultCellStyle.SelectionForeColor = df3
...
End Sub
希望这能帮到你们。
答案 10 :(得分:0)
如果这是因为它在初始加载时引发了不需要的GridView1_SelectionChanged事件,那么可以使用一个标志来处理这个
public partial class YourFormName
{
private bool IsReady= false;
private void YourFormName_Load(object sender, EventArgs e)
{
//Load your GridView1...
//Format your GridView1...
IsReady = true;
}
void GridView1_SelectionChanged(object sender, EventArgs e)
{
if (!IsReady)
return;
//do the rest of the stuffs
}
}
答案 11 :(得分:0)
“显示” 事件对我有用:
private void frmMain_Shown(object sender, EventArgs e)
{
dataGridView1.ClearSelection();
}