본문 바로가기

개발새발 개발자/C#

(6)
[C# WPF] 데이터 바인딩 에러 처리하기 TextBox의 Text 내용을 Binding 하려고 하니까 아래와 같은 에러가 나타났다. 'System.Windows.Markup.XamlParseException; 양방향 바인딩에는 Path 또는 XPath가 있어야 합니다.' 다음과 같이 처리하면 해결된다. (예제 코드에서는 Binding만 써도 잘 돌아갔는데 왜 나는 안 될까...) 해결 방법에 대한 자세한 설명은 아래에 나와있다.출처: https://docs.microsoft.com/en-us/dotnet/api/system.windows.data.binding.path?redirectedfrom=MSDN&view=netframework-4.7.2#System_Windows_Data_Binding_Path 즉, {Binding}과 {Binding..
[C# GUI 프로그래밍] 키보드 입력 처리 키보드에 대한 이벤트는 어디서 입력되어야 할까? 키보드는 특정 GUI에서 입력받는 게 아니라 폼 저체에서 입력을 받게 된다. 따라서 키보드 값을 입력받는 메소드는 폼에 속해야 한다. 키보드 이벤트를 만들려면 폼 영역을 더블 클릭 한 다음 오른쪽에 있는 속성 창 번개 모양 버튼을 누르면 된다.KeyDown: 키를 누를 때 이벤트 발생KeyPress: 키를 계속 누르고 있을 때 발생KeyUp: 키를 뗄 때 발생 체감 상으로는 KeyDown과 KeyPress는 거의 비슷하다. KeyUp은 누르고 있다가 떼는 순간 일어나며, 잘 사용하지 않기 때문에 KeyDown과 KeyPress에 대해 알아보자. - KeyDown 설정하기1. KeyDown을 더블 클릭 해서 메소드를 생성한다.2. 번개 아이콘 왼족 메뉴를 누..
[C# GUI 프로그래밍] 이미지 박스와 그래프 픽처 박스에는 jpg, bmp, png 파일 등 대부분의 이미지 파일을 첨부할 수 있다. 도구 상자에서 picture box를 선택하면 윈도우 폼 안에 들어간다. 픽처 박스 컨트롤에 생긴 삼각형을 누르면 이미지 선택 및 크기 모드를 정해줄 수 있다. 좌) 이미지 선택원하는 이미지를 첨부한다. gif: 움직이는 그림jpg: 보통 많이 쓰는 확장자bmp: 용량이 커서 많이 사용하지 않는다.wmf: 벡터 파일. 이미지를 크게 늘려도 퀄리티가 낮아지지 않는다. 윈도우 메타 파일도 wmf의 한 종류다.png: 그림의 윤곽만 정확히 나올 수 있게 하는 이미지. 우) 크기 모드픽처 박스의 크기 안에 그림을 어떻게 채워넣을지 정의한다. normal: 픽처 박스나 이미지의 크기 조정 없이 그대로 보여준다.stretch ..
[C# GUI 프로그래밍] 전자 시계와 스톱워치 만들기 최종적으로 만들 예제는 위와 같다. 텍스트 박스를 쓰면 더 쉽게 구현 가능하지만, 리스트 박스 연습을 위해 리스트 박스를 사용한다. - 구현 조건1. 타이머 Interval타이머 이벤트를 10ms 단위로 동작시킨다. 100분의 1초가 10ms이므로 10ms 단위로 타이머 이벤트를 발생시켜 밀리 초를 하나씩 증가시키면 된다. 2. 밀리초 초기화 및 초 값 업데이트밀리초가 99에서 100이 되는 순간 100을 출력하지 않고 초를 ++해서 출력하고 0으로 초기화한다. 3. 리스트 박스 Remove리스트 박스는 Add 하면 행이 추가가 되므로 초를 증가할 때마다 Remove를 동작시킨다. 4. 스톱워치 시작 버튼밀리초 증가를 시작 버튼에 넣어야할지, 타이머 버튼에 넣어야할지 생각해봐야 한다. 결론부터 말하자면 ..
[C# GUI 프로그래밍] 타이머 컨트롤 이벤트 처리 시간에 대한 이벤트를 주려면 Timer가 필요하다. 도구 상자의 Timer를 form에 추가해준다. 하지만 그렇다고 해서 화면상에 타이머가 돌아가는 모습이 보이는 건 아니다. 그런 건 그래픽을 따로 띄워주는 것이지 실제로 눈으로 보여주지는 않는다. 단지 정해놓은 시간 주기로 이벤트를 발생시키는 컨트롤이다. 개수는 컴퓨터가 허용하는 한계까지 계속 추가할 수 있다. 너무 많이 사용하는 것은 좋지 않다. - timer 속성 정하기Enabled: True로 설정해 form이 시작 하자마자 타이머를 사용할 수 있도록 한다.Interval: 타이머 이벤트 실행 간격을 ms(밀리 sec) 단위로 설정한다. 100ms = 0.1sec이다. 타이머 예시타이머로 전자 시계를 만들어보자. 사실 이 프로그램은 라벨이나 텍스트..
[C# GUI 프로그래밍] 텍스트 박스와 리스트 박스 텍스트 박스와 리스트 박스의 기능 - 텍스트 박스값을 입력 받는 GUI 컨트롤. String으로 값을 받고 필요한 형태로 리턴한다. - 리스트 박스목록을 출력하는 GUI 컨트롤. 출력할 값을 추가 및 제거하는 기능을 활용한다. 텍스트 박스 사용법텍스트 박스는 텍스트를 입력할 수 있으며 수정이 가능하다. 여러 줄로 입력하고 싶으면 상자에서 옆으로 누운 세모 버튼을 클릭하면 된다. - 값을 입력 받아 읽어오기string TextBox.Text - 받아온 값을 숫자로 바꾸기double Convert.ToDouble(TextBox.Text)- TextBox에 값 쓰기TextBox.Text="넣을 문자열" 텍스트 박스 사용 예제Source에 쓴 값을 Target으로 저장하는 예제 받은 값과 연산자로 계산을 수행하..