c#

  • c# DataTable에 행 추가하기 – DataRowCollection.Add

    행을 추가하기 위해 DataRowCollection.Add를 실행할 때 레퍼런스에는 반드시 DataRow나 object 배열을 패러미터로 받아야 한다고 나와 있지만 그렇지 않다. 아래와 같이 아규먼트를 입력하지 않거나 배열 아닌 하나의 값을 입력해도 된다. 아규먼트로 정수를 입력할 때 DataGridViewRowCollection.Add와는 다르게 작동하므로 주의하는 게 좋다. DataGridViewRowCollection.Add에 정수를 입력하면 그 수만큼의 빈 행들이 만들어진다.

  • c# System.Timers.Timer로 비주얼 컨트롤 제어하기

    멀티뜨레드로 인한 크로스-뜨레드 예외 발생 메인 뜨레드로부터 분리된 뜨레드에서 비주얼 컨트롤을 제어하려 하면 원칙적으로 크로스-뜨레드 오류가 발생한다. 이러한 오류는 디버그 빌드에서는 예외로 처리되지만 릴리스 빌드에서는 그냥 오류가 생긴 대로 출력하고 넘어간다. 릴리스 모드에서 예외로 처리가 되지 않는다고 괜찮은 게 아니라 오류를 무시하는 것이므로 엉뚱한 결과가 나타날 수 있다. 따라서 디버그 빌드에서 분명하게 조치를 취해야 한다….

  • [c#] 멀티뜨레드 동기와 비동기

    동기는 하나의 뜨레드에서 순차적으로 처리되는 걸 말하고 비동기는 여러 뜨레드들에서 동시에 처리되는 걸 뜻한다. 동기를 synchronous라 하고 비동기는 부정 접두사 ‘a~’를 붙여서 asynchronous라 한다. 각각 줄여서 sync와 async라고도 하며 async는 ‘에이씽크’라고 읽는다. ‘아씽크’라고 읽는 거 아니다. synchronous를 네이버 영어사전에서 찾아보면 제일 먼저 ‘동시 발생하는’이라는 뜻이 나온다. 여기에서 혼란이 시작된다. 프로그래밍에서 이해하는 것은 사전적 의미와 완전 반대다….

  • c# is 연산자로 비주얼 컨트롤 검색하기

    아래 예제는 폼에 있는 비주얼 컨트롤들 가운데 TextBox들만 처리하는 거다. is는 형 변환을 할 수 있는지 확인하는 연산자다. Controls는 Control의 컬렉션이다. 즉 Control을 TextBox로 타입캐스트할 수 있느냐를 묻는 거다. 아래의 코드는 오류로 처리된다. Controls에 담겨 있는 건 인스턴스이고 TextBox는 클래스 자체이기 때문이다. 이렇게는 가능하다.

  • c# String 잔기술들 1

    String과 string의 차이 String은 클래스이고 string은 변수형이다. 그러나 아래 예제를 보면 이들 사이에 차이가 없다는 걸 알 수 있다. string은 변수형인데 new로 만들 수 있고 String은 클래스인데 new 없이 그냥 쓸 수 있다. 이들은 이렇게 변수형과 클래스 모두의 기능을 한다. 더 정확하게는 string이 String의 껍데기다. string is an alias for System.String in .NET.– Built-in reference…

  • c# ComboBox 잔기술들

    dictionary 바인드하기 딕셔너리 자체를 바인드하는 게 아니라 키나, 밸류의 필드를 해야 하는 거에 유의한다. wpf DataColumn 바인드하기 wpf의 콤보박스는 ComboBox.DisplayMember가 아니고 ComboBox.DisplayMemberPath를 이용한다.

  • c# RichTextBox 줄 간격 설정하기

    좀 복잡하다. RichTextBox는 윈도우즈 차원에서 제공되는 컨트롤인데 델파이와 달리 .네트는 win32 api를 제대로 랩wrap하지 않아서 아래와 같이 win32 api를 직접 제어해야 한다. SendMessage의 아규먼트로는 아래와 같이 IntPtr을 넣는 게 원칙이긴 한데 조금 더 복잡하다.

  • c# RichTextBox 출력 빠르게 하기

    RichTextBox.AppendText는 느리다. 수십 줄 출력하는 데에도 그려지는 게 보일 정도다. 아래의 방법들을 쓰면 빠르게 출력된다. RichTextBox.BeginUpdate/EndUpdate 만들기 일반적인 비주얼 컨트롤들의 경우 BeginUpdate/EndUpdate가 있다면 이걸 쓰는 게 빠르다. AppendText로 추가되는 내용을 바로바로 출력하는 게 아니라 출력을 멈췄다가 추가할 것들을 다 추가한 뒤 한꺼번에 출력하는 거다. 하지만 RichTextBox에는 BeginUpdate/EndUpdate가 없다. 아래와 같이 상속해서 써야 한다. String.Join 이용하기…

  • [c#] RichTextBox RTF(rich text format) 기본적인 이용 방법

    TextBox는 메모장이고 RichTextBox는 워드패드다. 문자열에 스타일을 적용하려면 RichTextBox를 써야 한다. RichTextBox는 윈도우즈 차원에서 제공되는 것이며 .네트는 win32 api를 랩wrap하여 지원한다. 그러나 완벽하지는 않아서 높은 수준으로 이용하려면 직접 win32 api를 제어해야 한다. 스타일이 적용된 것은 rich text format이라 하며 줄여서 rtf라고 한다. 스타일을 제어하는 데에는 크게 세 가지 방법이 있다. 문자열을 입력하기 전에 스타일을 설정하기 스타일을…