Car*_*rra 3 c# enums bit bitwise-operators
我遇到以下问题:
我想这会做到:
DataGridViewColumnCollection dgv = myDataGridView.Columns;
dgv.GetFirstColumn(
DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
Run Code Online (Sandbox Code Playgroud)
实施是AFAIK,"所有这些" - 它使用:
((this.State & elementState) == elementState);
Run Code Online (Sandbox Code Playgroud)
哪个是"全部".如果你想编写一个"any of",也许可以添加一个帮助方法:(之前添加"this" DataGridViewColumnCollection使其成为C#3.0扩展方法)
public static DataGridViewColumn GetFirstColumnWithAny(
DataGridViewColumnCollection columns, // optional "this"
DataGridViewElementStates states)
{
foreach (DataGridViewColumn column in columns)
{
if ((column.State & states) != 0) return column;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
或者使用LINQ:
return columns.Cast<DataGridViewColumn>()
.FirstOrDefault(col => (col.State & states) != 0);
Run Code Online (Sandbox Code Playgroud)