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# 키움증권 api를 이용하지 않고 영웅문 제어하기

이베스트투자증권 api에는 이베스트투자증권의 매매 애플리케이션hts, home trading system인 이베스트 프로를 직접 제어할 수 있는 메써드가 있다. 예를 들어 api를 이용하여 만든 애플리케이션에서 특정 종목을 고르면 이베스트 프로의 창도 해당 종목으로 바꿀 수 있다. 키움증권 api에는 이런 기능이 없지만 쉽게 구현할 수 있다. 윈도우즈가 제공하는 표준 비주얼 컨트롤은 handle이라는 고유한 정수 값을 갖는다. 각 컨트롤의 이름이라고…

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

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

c# 문자열 “”와 string.Empty의 성능 차이

문자열 “”과 string.Empty는 널이 아니고 아무 문자도 담겨 있지 않은 상태로 서로 같다. 그러나 처리 과정은 다르다. “”은 객체가 만들어진다. 그렇다면 그 과정 때문에 처리가 더 늦을까? 두 개의 방법으로 성능을 비교해 봤지만 특별한 차이가 없거나 오히려 “”가 더 빨랐다. 변수 값 쓰기 아래의 예제는 문자열 변수에 “”와 string.Empty를 각각 쓰는 거다. 워밍-업 결과를 뺀…

c# 애플리캐이션 설정을 파일로 쓰고 읽기

애플리캐이션을 이용하다 보면 여러 설정 값들을 관리해야 할 때가 있다. 이런 설정 값들을 저장하고 불러오기 위해 따로 파일을 제어할 필요가 없도록 .네트는 애플리캐이션 설정 기능을 마련해 두고 있다. 읽을 땐 이렇게 한다. Scope를 User로 하면 런타임으로 저장할 수도 있다. 파일은 애플리캐이션 폴더가 아닌 윈도우즈 사용자 폴더 안의 숨겨진 폴더인 AppData에 저장된다. 설정 값들이 수십 개 정도로 많다면 DataTable에 저장한 뒤 직접 파일로 입출력을 하는 게 더 편할…