문제

다음과 같은 문제가 있습니다.

  • 열 컬렉션의 첫 번째 가시적이고 냉동 열을 얻고 싶습니다.

나는 이것이 그렇게 할 것이라고 생각한다 :

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 플래그 세트와 일치하는 첫 번째 열을 얻을 수 있지만 그렇지 않습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top