본문 바로가기

c#41

Error : are you missing a using directive or an assembly reference? C#에서 참조를 했는데도 아래와 같은 에러가 발생하는 경우가 있습니다. The type or namespace name 'ClassName' could not be found (are you missing a using directive or an assembly reference?) 이런 경우는 프로젝트 속성에서 Application 탭의 Target framework가 .Net Framework Client Profile로 지정되어 있기 때문입니다.따라서 Target framework을 .Net Framework로 변경 변경하시면 됩니다.(아래의 이미지를 참고하세요.) 2015. 11. 26.
C# 클래스 타입 비교 C#에서 클래스 타입을 비교하는 2가지 방법입니다. string str = "문자"; if (str.GetType() == typeof(string)) { // 처리 로직 } if (str is string) { // 처리로직 } 2015. 9. 23.
C# TreeView에서 선택된 TreeNode의 글자 Font Style 변경하기 TreeView의 TreeNode를 선택하면 해당 TreeNode의 배경이 기본적으로 찐한 파랑색으로 변경됩니다. 하지만 TreeView가 있는 Form에 Focus가 다른 Application으로 이동하면 선택된 TreeNode의 배경이 기본색으로 변경되어 선택한 TreeNode를 확인하는 것이 힘듭니다. 이러한 점을 해결하기 위해서 선택된 TreeNode의 글자를 굵게 표시하는 방법에 대해서 알아보겠습니다. 1.아래와 같이 Form에 TreeView를 추가합니다. 2.TreeView에 AfterSelect와 BeforSelect 이벤트를 추가합니다. 3.AfterSelect와 BeforeSelect 이벤트에 아래와 같이 코딩합니다. using System; using System.Collections.. 2015. 9. 9.
C# - Bitmap 이미지 해제 로컬에 있는 이미지를 Bitmap 객체로 가지고 올 경우 및 Bitmap을 사용할 때 메모리 해제를 해주어야 한다. 메모리 해제를 하지 않으면, 로컬의 이미지 파일 같은 경우는 Application이 종료되지 않으면, 해당 이미지 파일을 계속 사용되게 되어 이미지 파일을 삭제하지 못하는 경우가 발생한다. 따라서 Bitmap으로 이미지를 사용 후에는 반드시 메모리를 해제해주어야 한다. Bitmap bitmap = new Bitmap("Image File Path"); /* 이미지에 대한 작업 코드 */ // 이미지 메모리 해제 bitmap.Dispose() 2015. 9. 1.
C# - DataGridView의 컬럼 정렬 DataGridView를 사용하여 구현시 각 컬럼마다 좌측,우측,중앙 정렬을 해야 할 경우가 있습니다.예를 들면 문자는 좌측 정렬, 숫자는 우측정렬 등...DataGridView에서 컬럼의 정렬방법을 알아보겠습니다. 1.DataGridView 에서 Edit Columns를 클릭합니다. 2. Edit Columns화면에서 DefaultCellStyle 항목의 [...] 버튼을 클릭합니다. 3. CellStyle Builder 화면의 Layout > Alignment에서 원하는 정렬 방식을 선택하면 각 컬럼의 정렬을 할 수 있습니다. 2015. 8. 12.
C# - Inconsistent accessibility: return type Error - Inconsistent accessibility: return type...... 위의 에러 메시지가 표시되면, return type 중에 public으로 접근자를 지정하지 않아서 입니다. 2015. 8. 7.
C# - DataGridView의 헤더 텍스트 정렬하기 DataGridView를 생성하고 컬럼을 추가하면 DataGridView의 헤더의 텍스트는 기본적으로 좌측 정렬로 되어있습니다.헤더의 텍스트 정렬을 변경하는 방법을 알아보겠습니다. 1.DataGridView 를 선택합니다. 2. Properties(속성)에서 ColumnHeaderDefaultCellStyle의 [...] 버튼을 클릭합니다. 3.CellStyle Builder 창에 Layout의 Alignment 속성을 원하는 정렬로 변경합니다. 여기서는 MiddleCenter로 변경하겠습니다. 4. 아래의 이미지와 같이 DataGridView의 헤더 텍스트가 중간정렬로 변경되었습니다. 2015. 8. 5.
C# - 리소스 이미지 코드로 사용하기 프로젝트 리소스로 이미지를 등록 후 C#코드로 사용하는 방법입니다. 1.아래와 같이 프로젝트 리소스에 이미지를 등록합니다. 2. C#코드는 아래와 같이 Prpperties 네임스페이스의 Resources 클래스의 변수로 이미지를 사용할 수 있습니다. 2015. 8. 2.
C# - 이미지 사이즈 변경(Resize) .Net 프로그래밍에서 이미지를 처리하기 위해 Bitmap 객체를 사용합니다. 그리고 이미지의 사이즈를 변경해야 하는 경우도 발생합니다. 이미지의 사이즈를 변경하는 방법은 여러가지가 존재합니다. 밑의 소스는 아주 간단하게 이미지의 사이즈를 변경하는 방법입니다. // 원본 이미지 Bitmap sourceImage = new Bitmap(@"D:\earth.png"); // 사이즈가 변경된 이미지(1/2로 축소) int width = sourceImage.Width / 2; int height = sourceImage.Height / 2; Size resize = new Size(width, height); Bitmap resizeImage = new Bitmap(sourceImage, resize); 2015. 7. 3.
C# - 정규식을 이용한 문자 변환 정규식을 이용하여 특정 문자만 얻는 방법을 알아보겠습니다. - Namespace : System.Text.RegularExpressions - Class : Regex - Method : public static string Replace( string input, string pattern, string replacement ) 1. 숫자만 얻기 - 정규식 : [^0-9] string str = "Englsh@korea$101299**한글"; // 숫자만 0-9 str = Regex.Replace(str, @"[^0-9]", ""); // 결과 : 101299 2. 영문자만 얻기 - 정규식 : [^a-zA-Z] string str = "Englsh@korea$101299**한글"; // 영문자 a-z .. 2015. 6. 19.
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# - 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.