c#

  • c# DataTable의 행을 검색하여 계산하기

    DataTable에는 대개 많은 행들이 있는데 모든 행들이 늘상 필요한 건 아니다. 필요할 때마다 많은 행들 가운데 일부만 추려서 보든지 계산하든지 한다. 행을 검색하여 출력하기 아래는 DataTable에 시간과 정수를 채운 뒤 시간을 조건으로 하여 만족하는 행들만 보이게 하는 예제다. 이때 이용하는 게 DataTable.DefaultView 프라퍼티인데 이거는 customized view 즉 원래 DataTable의 내용은 바꾸지 않고 만들어진 껍데기에 불과하다….

  • c# 코드에서 부하가 큰 부분 찾아내기 – diagnostic tools

    컴퓨터 프로그래밍을 하다 보면 어느 순간 자연스럽지 않게 cpu나 메모리의 점유가 올라간 걸 느끼게 될 때가 있다. 보통은 최근에 추가하거나 수정한 부분을 의심하여 이 부분을 주석으로 처리한 뒤 앞뒤 상황들을 비교하며 수습한다. 그러나 이렇게 단순한 방법으로는 해결이 되지 않는 경우들도 많다. 이럴 때 가장 원초적이고 확실한 방법은 문제가 생길 수 있는 모든 부분에 카운트를 달아서…

  • c# ListView 기본 예제

    데이터를 그리드나 리스트 형태로 출력해야 한다면 우선 DataGridView를 생각해 볼 수 있다. 그러나 이건 편하긴 하지만 느리고 데이터 바인드를 전제로 하기 때문에 직접 제어하는 경우 여러 문제들이 생긴다. 그 대표적인 예가 지나친 메모리 점유다. 그러나 엄격하게 지적하자면 DataGridView로 인해 생기는 여러 문제들은 이거를 적당하지 않은 용도로 이용해서 그런 게 아니라 애당초 이걸 잘못 만들어서 그런…

  • c# DataSource를 DataGridView에 바인드한 때 스크롤 잠기는 오류

    DataGridView에 무언가를 출력할 때 이걸 직접 제어하는 건 부하가 크다. 보통은 DataTable 같은 걸 만들어서 연결한 뒤 이걸 제어하여 자동으로 DataGridView에 출력되게 한다. 더 복잡해 보이지만 더 빠르다. 예를 들어 이렇게 바인드를 하면 DataGridView의 VirtualMode를 따로 설정하지 않아도 알아서 작동한다. 극단적인 경우지만 DataGridView가 수백 만 줄의 내용을 담아야 할 때 DataGridView에 직접 Add나 Insert로 내용을…

  • c# DataGridView의 공유 행 – shared rows

    아래는 행 인스턴스를 만들어 DataGridView에 추가한 뒤 DataGridView의 행이 아닌 추가를 위해 만든 인스턴스에 액세스하는 예제다. System.ArgumentOutOfRangeException 처리가 되며 Specified argument was out of the range of valid values. Arg_ParamName_Name라는 메시지가 뜬다. 클래스의 인스턴스를 만들어서 List에 넣으면 List에 들어간 아이템과 여기에 넣으려고 만든 인스턴스는 같다. 인스턴스를 수정하면 리스트의 아이템도 수정된다. 그러나 DataGridViewRow와 DataGridView의 관계는 이렇지…

  • c# DataGridView.AutoSizeColumnsMode 설정 성능 차이

    DataGridView를 출력할 때 칼럼의 폭을 어떻게 할 건지는 DataGridViewAutoSizeColumnsMode를 설정하여 결정한다. 기본 값인 none으로 하면 기본 설정된 칼럼의 폭으로 출력되며 셀에 출력될 문자열이 이 폭을 벗어나면 벗어난 부분은 잘린다. fill로 하면 DataGridView 크기만큼 꽉 차게 출력되며 각 칼럼에 비율을 설정하여 칼럼별로 폭을 다르게 할 수 있다. 이거로 설정을 하면 수직 스크롤바가 필요 없을 때에는 꽉…

  • c# 관리자 권한으로 빌드하기

    ​비주얼 스투디오를 관리자 권한으로 실행하면 디버그를 하는 동안 프로젝트도 관리자 권한으로 실행된다. 그러나 이 상태에서 빌드를 해도 관리자 권한으로 빌드되지는 않는다. 관리자 권한으로 빌드하려면 아래와 같이 한다. 이 파일의 주석 부분을 아래와 같이 해제한다.