프로그래밍/C#
-
C# UnitTest 사용하기 (MsTest)프로그래밍/C# 2021. 3. 22. 19:21
Test 환경 구축하기 솔루션 우클릭 -> 추가 -> 새프로젝트 테스트 검색 -> 단위 테스트 프로젝트로 프로젝트 생성 UnitTestProject 종속성 클릭 -> 프로젝트 우클릭 -> 참조추가 -> 테스트할 프로젝트 추가 기본적인 구성 프로젝트 이름으로 된 .cs 파일을 열면 이러한 코드가 보입니다. 기본적인 C# 의 셋팅과의 차이는 이름 위에 [TestClass], [TestMethod] 라는 코드인데요. 이건 MsTest 에서 제공되는 특성(Attribute) 입니다. 말 그대로 저걸 클래스명 또는 메소드명 위에 적어주면, 이 코드뭉치는 테스트 코드로 사용할 것이라는 의미입니다. 이제 테스트용 메소드를 구현할 건데, 여기서 이름을 먼저 보겠습니다. 이름은 보시는것처럼 테스트하려는 메소드의 이름, ..
-
[C#] DataGridView Drag&Drop (row 단위)프로그래밍/C# 2021. 3. 18. 19:37
한 줄 Drag & Drop 하기 C# 의 DataGridView 도구를 통해서 한 줄씩 Drag & Drop 이 가능하도록 구현해봅시다. 우선 기본 폼에 DataGridView 를 원하는 크기만큼 설정해줍니다. 값은 코드를 통해서 넣을 예정이니 아무 작업도 하지 말고 코드를 복사해서 넣어주시면 됩니다. 사용하는 이벤트는 4가지로 MouseMove, MouseDown, DragOver, DragDrop 입니다. MouseMove : 끌어서 놓기 작업을 수행하는 동안의 효과를 지정해줍니다. MouseDown : 처음 클릭한 지점의 위치정보를 가져옵니다. DragOver : DragDropEffects 를 결정합니다. (ex. 복사,이동 ...) DragDrop : Drop 시점의 이벤트를 설정합니다. 한 ..
-
[C#] error CS0052 : 일관성 없는 엑세스 가능성프로그래밍/C# 2021. 3. 11. 12:50
A 형식이 B 필드보다 액세스 하기 어렵습니다. CS0052 error 가 발생했다면 위와 같은 문구를 보셨을 겁니다. 해결하는 법은 간단합니다.바꿔주어야 하는 것은 A 이고 A 의 클래스 또는 형식이 public 으로 선언이 되어있는지 확인해주세요. C# 은 접근제한자를 명시해주지 않으면 기본적으로 class 에 대해서는 internal, 내부의 멤버에는 private 가 기본적으로 설정됩니다. 따라서 왼쪽 코드는 internal class 로 외부에서 실행하면 접근이 불가능하게 되는 겁니다.
-
[C#] ContextMenuStrip Size 조절프로그래밍/C# 2020. 11. 6. 15:45
ContextMenuStrip ListBoxControl 에서 우클릭을 사용해서 메뉴를 볼 수 있도록 설정했습니다. 그런데 메뉴스트립의 사이즈가 너무 크네요. 메뉴 설정은 보통 아래와 같이합니다. 이렇게 하면 ContextMenuStrip 과 ToolStripMenuItem 클래스에서 AutoSize 기능에 의해 자동으로 사이즈가 설정됩니다. Font 사이즈의 경우 Window.Form 에 기본으로 설정되어 있는 설정이 적용되기 때문에 상황에 따라 클수도 작을 수도 있습니다. 그래서 아래와 같이 조절해주시면 되겠습니다.
-
[C#] virtual, abstract, interface프로그래밍/C# 2020. 11. 5. 14:33
Virtual (가상) abstract 와는 다르게 본문을 정의할 수 있습니다. (비워 놓아도 됨) 파생 클래스에서 재정의 할 수 있습니다. 자식 클래스에서는 new 또는 override 키워드 사용이 가능합니다. override는 재정의 또는 확장의 의미 new는 기본 클래스를 숨긴다는 의미 base. 키워드를 통해 부모 클래스의 함수 호출이 가능합니다. private, static 등 접근 한정자는 사용할 수 없습니다. 더보기 public class Parent { public virtual void func1() { } } public class Child : Parent { public override void func1() { base.func1(); Console.WriteLine("재정의")..
-
[C#] Delegate 를 이용해 폼 간 데이터 전송하기프로그래밍/C# 2020. 10. 8. 15:18
델리게이트(Delegate) 해석하면 '대리인' 이라는 뜻으로 메서드를 참조하는 변수입니다. 델리게이트의 매개변수에 특정 메서드를 추가시켜주면 해당 델리게이트는 그 메서드를 실행시킬 수 있게 됩니다. 말로는 복잡하니 예제를 보면서 이해하시기 바랍니다. Delegate 를 이용해 폼 간 데이터 전송하기 자식 폼의 TextBox 내용을 부모 폼으로 전달하는 간단한 예제를 구현해볼 겁니다. 우선이게 두 개의 폼의 소스코드입니다. 여기서 우리는 델리게이트가 어떤 식으로 사용되었는지를 파악해볼 겁니다. 번호 순서대로 화살표를 따라가면서 설명을 읽어주세요. 1번 : 델리게이트를 원하는 반환형과 참조형을 사용하여 생성해주었습니다. 이거는 우리가 델리게이트 변수를 인스턴스 할 수 있도록 틀을 만든 것과 같습니다. 마치..
-
[C#] TextBox 에 찾기바꾸기 기능 활용프로그래밍/C# 2020. 9. 29. 15:48
ScintillaNET_FindReplaceDialog NuGet 패키지 활용하기 NuGet 패키지 관리에서 ScintillaNET_FindReplaceDialog 패키지를 다운로드해주세요. 이 패키지의 주요 기능은 다음과 같습니다. 또한 이미 구현된 Dialog 를 사용하기 때문에 코드 몇 줄이면 사용이 가능합니다. 1. 검색 2. 바꾸기 3. 검색 단어 강조 4. 검색 단어를 포함하는 줄 강조 5. 특정 라인으로 이동 코드 적용하기 간단한 인스턴스만 하나 해주시면 바로 사용이 가능합니다. using ScintillaNET_FindReplaceDialog; // FindReplace Declare private FindReplace MyFindReplace; KeyDown 이벤트를 통해 단축기를 만들 ..
-
[C#] Column editing function in TextBox프로그래밍/C# 2020. 9. 29. 09:45
열 편집 기능 (Column editing function) 현재 Notepad++, 비주얼 스튜디오 등등 편집기에서 대부분 사용 가능한 기능입니다. 보통 Alt + 마우스 드래그 또는 Shift + Alt + 방향키 조합을 통해서 사용하는데요. 저희가 자연스럽게 사용하던 기능들은 사실 복잡한 구현이 필요합니다. C# 에서 사용하는 TextBox 또는 RichTextBox 에서는 이러한 기능을 사용할 수 없기 때문이죠. Currently, it is a feature that is mostly available in editors such as Notepad++ and Visual Studio. Usually, it is used through the combination of Alt + mouse dr..