말 그대로다.
C# 의 DataGridView 에서 Cell Content 를 Button으로 지정하고,
상황에 따라 Button을 Show/Hide 를 통해 클릭 가능 / 불가능을 안내하려 했다.
근데, 왜그런지 몰라도 동적 생성한 gridView > cell > button 이 visible 이 안 먹었다.
코드는 대략 아래와 같았다.
// gridView 안의 button 을 보여주거나 숨긴다.
public void GridBtnShowHide(DataGridView _grv, int columnNo, int rowNo, bool isVisible, string btntxt)
{
Button btn = _grv[columnNo, rowNo].Value as Button;
if (btn != null) { btn.Visible = isVisible; btn.Text = btntxt; }
}
근데, GridView.Add() 를 통해 grid row 를 추가하고 나서 추가한 row 에 대해 바로 button 을 안 보이려 하니, 안 된다.
즉,
GridView.Add();
GridBtnShowHide( 그리드뷰, 열번호, 행번호, false , "");
이렇게 하면 , 안됨.
원인은 btn 객체 = 그리드뷰 안의 버튼 객체 자체가 null 로 판정된다.
무슨 이야기냐....
GridView.Add() 로 row 자체를 생성했는데도 불구하고,
생성한 Row 안의 contents 인 button 은, 저 시점에서는 null 로 취급된다는 거다.
아마 화면 출력이 되야 객체가 생성되서 접근 가능한 거 같긴 한데,
두시간정도 삽질하다가 포기했다. 인터넷 뒤져봐도 나와 비슷한 경우는 없는 듯 하고...
Button 대신 DataGridViewButtonColumn 으로 해봐도 안되고... 모르겠다.
간단하게 포기. 구리지만 텍스트를 사용하기로 결정.
이상 끝. 참고.
'프로그램 > C#' 카테고리의 다른 글
ms access 에서 ISNULL() 쿼리함수. (0) | 2016.03.31 |
---|---|
C#에서 ms access 암호 있을때 connection string + 코드로 mdb 암호 변경 수정. (0) | 2016.03.24 |
C#에서, webbrowser 의 documentText 갱신 방법. (0) | 2016.03.05 |
[]datagridview (0) | 2016.01.18 |
javascript 의 prompt 와 같은 , 메시지 입력창 기능의 코드 (0) | 2016.01.09 |