본문 바로가기

.Net53

C# - System.Drawing.Color의 Magenta Color 버그 C#에서 제공하는 다양한 색상등이 정의되어 있고, 매우 유용합니다. 하지만 Color.Magenta 색상에는 버그가 있는 것으로 생각됩니다. 예를 들어 Color.Magenta 색상으로 단색의 Bitmap을 생성하고, Bitmap을 여러 Control(Picture Box / Tool Strip Button 등)에 함께 사용하면 이미지가 표시되지 않는 현상이 발생합니다. (다른 색상의 경우 정상적으로 표시됩니다.) - 반드시 Magenta 색상을 사용해야 한다면 아래의 코드를 적용해서 사용하시길 바랍니다. (다른 색상에도 문제가 있는지 전수 검사를 하지 않았으면, 동일 현상이 발생한다면 아래의 코드를 참고하세요.) Color color = Color.FromName("Magenta"); color = C.. 2015. 6. 16.
C# - ComboBox 텍스트(Text) 수정 못하게 하기 .Net의 ComboBox Component는 기본적으로 Text를 수정 할 수 있도록 되어있습니다.Text를 수정할 수 없도록 하기 위해서는 ComboBox의 속성 DropDownStyle을 DropDownList로 변경해주면됩니다. 2015. 5. 22.
C# - DataGridView의 Column Header 높이 변경하기 아래의 이미지에서처럼 Form에 추가된 DataGridView의 Column Header 높이를 변경하는 방법입니다. 1. DataGridView의 ColumnHeadersHeightSizeMode가 AutoSize로 되어있어 Header 높이를 변경 할 수 없습니다. ColumnHeadersHeightSizeMode를 EnableResizing으로 변경합니다. 2. DataGridView의 ColumnHeadersHeight를 원하는 값으로 입력합니다. 3. C# 코드는 아래와 같습니다. dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing; dataGridVie1.ColumnHea.. 2015. 5. 21.
C# - TreeView에 Node 추가 시 성능 향상 TreeView에 많은 TreeNode를 추가 할 때 성능이 저하되는 현상이 발생합니다. GUI Component의 성능저하의 가장 큰 이유는 Component를 화면에 다시 그리는(Update) 현상 때문입니다. 그래서 TreeView의 BeginUpdate와 EndUpdate를 아래의 코드와 같이 사용하여 성능을 향상시킬 필요가 있습니다. // TreeView에 Node가 추가될 때 TreeView Component가 갱신 안되게 함. treeView.BeginUpdate(); // Node 추가 for (int i = 0 ; i < 1000 ; i++) { Node node = new Node(i.ToString()); treeView.Nodes.Add(node); } // TreeView에 Nod.. 2015. 5. 20.
C#, Java 등의 코드 하이라이트 사이트 게시판에 소스 코드 등록 시 사용하면 편하게 코드 하이라이트 할 수 있는 사이트 http://www.tohtml.com http://www.dotnetkorea.com/CodeHighlighter/PasteCode.aspx http://alexgorbatchev.com/SyntaxHighlighter/ 2015. 4. 15.
C# - DLL 또는 EXE의 로컬 위치 알기 간혹 dll이나 exe의 로컬 위치가 필요할때가 있습니다. 아래의 코드는 해당 클래스에서 로컬 위치를 구할 수 있는 코드 입니다. string localPath = this.GetType().Assembly.Location.Replace(this.GetType().Assembly.ManifestModule.Name, ""); 2015. 4. 15.
C# - 윈도우 로그인 계정 얻기 System.Security.Principal.WindowsIdentity.GetCurrent().Name; 2015. 4. 15.
C# - DataGridView에 사용자 Class 바인딩 하기 DataGridView에 Class를 바인딩 하는 방법입니다. 1. User Class를 생성한다. public class User { private string name; public string Name { set { name = value; } get { return name; } } private string telNumber; public string TelNumber { set { telNumber = value; } get { return telNumber; } } public User(string name, string telNumber) { this.Name = name; this.TelNumber = telNumber; } } 2. DataGridView에 DataSource를 지정한다.. 2015. 4. 15.
C# - MessageBox의 OK, Yes, No 등의 버튼 텍스트 얻기 다국어 지원 개발을 하다보면 MessageBox의 버튼텍스트가 필요합니다.. MessageBox의 버튼의 텍스트는 User32.dll에 포함되어있습니다. 버튼의 텍스트를 가지고 오는 방법은 아래와 같습니다. public const uint OK_CAPTION = 800; public const uint CANCEL_CAPTION = 801; public const uint ABORT_CAPTION = 802; public const uint RETRY_CAPTION = 803; public const uint IGNORE_CAPTION = 804; public const uint YES_CAPTION = 805; public const uint NO_CAPTION = 806; public const ui.. 2015. 4. 15.
C# - Url 파라메터 인코딩하기 Url 파라메터를 인코딩하는 방법입니다. UTF-8 한글을 웹서버에 파라메터로 전달 시 사용합니다. 인코딩 하는 이유는 특수문자 &가 파라메터 중간이 있으면 값이 짤리는 현상이 발생합니다 예를 들어 Get 방식으로 파라메터 값을 전달시 "http://webserver/page.xasp?param=한글&영어" 이렇게 인코딩하지 않고, 웹서버에 파라메터를 전달하게 되면 param = "한글"이 됩니다. 1. C# 프로젝트에 System.web.dll 참조 추가를 합니다. DLL 위치 : C:\Windows\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll 2. 아래의 그림과 같이 System.Web.dll이 추가 됩니다. 3. HttpU.. 2015. 4. 15.
C# - AccessViolationException try catch 하기 ActiveX, COM 등에가 "AccessViolationException"이 발생하는 경우가 있다. 해당 Exception이 발생하면 프로그램은 에러 없이 죽어버린다. AccessViolationException을 try~catch 하는 방법은 아래와 같이 하면 된다. using System.Runtime.ExceptionServices; using System.Security; [HandleProcessCorruptedStateExceptions] [SecurityCritical] public void Method() { try { } catch(AccessViolationException e) { } } 2015. 4. 15.