문제
다음과 같은 문제가 있습니다.
- 열 컬렉션의 첫 번째 가시적이고 냉동 열을 얻고 싶습니다.
나는 이것이 그렇게 할 것이라고 생각한다 :
DataGridViewColumnCollection dgv = myDataGridView.Columns;
dgv.GetFirstColumn(
DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
- 첫 번째 냉동 또는 보이는 열을 얻기 위해 비트 마스크를 만들 수도 있습니까?
해결책
구현은 Afaik, "이러한 모든 것" - 그것은 다음을 사용합니다.
((this.State & elementState) == elementState);
"모두"입니다. "어떤 사람"을 쓰고 싶다면 아마도 도우미 방법을 추가 할 수 있습니다. 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;
}
또는 LINQ와 함께 :
return columns.Cast<DataGridViewColumn>()
.FirstOrDefault(col => (col.State & states) != 0);
다른 팁
글쎄, 비트 마스크는 일반적으로 다음과 같이 작동합니다.
|
깃발에 합류합니다. &
비트 마스크로 표시되는 플래그 세트에서 플래그의 서브 세트를 필터링하는 것입니다. ^
마스크로 플래그를 뒤집습니다 (적어도 C/C ++에서).
첫 번째 냉동 또는 가시 열을 얻으려면 GetFirstColumn
비트 마스크를 처리해야합니다 (예 : GetFirstColumn
플래그 세트와 일치하는 첫 번째 열을 얻을 수 있지만 그렇지 않습니다).
제휴하지 않습니다 StackOverflow