목록c# (11)
개발자 블로그
국내에는 출시되지 않은 UWP 책을 구입했다. 아마존을 통해서. WPF도 그렇고, UWP도 그렇고, 국내 윈도우 클라이언트 프로그램 시장은 다 죽었는가보다. 책 조차 출시되지 않는걸 보면. 아마도 대부분 웹으로 옮겨갔겠지.사실 뭐 나도 UWP로 밥 벌어먹고 사는 입장은 아니다. WPF는 간간히 호작질할 때 쓰긴 하는데 UWP는 써본적도 없다. 그럼에도 불구하고 굳이 UWP 책을 산건 윈도우 클라이언트 프로그래밍이 좋기도 하고, 책 수집 자체에 목표가 있기도 하고 뭐 그렇다.주문은 아마존에서 했다.택배 도착. 배송은 딱 1주일 걸렸다. 배송 상태는 썩 좋지 않았다. 그나마 뽁뽁이 들어있어서 책은 이상 없더라. 이렇게 지난번 WPF 책에 이어서 UWP 책도 소장하게 되었다. 헤헤. 원서라서 읽는데 시간이 좀..
지금 시중에서 구입할 수 있는 WPF 관련 책이 이 책 말고는 한 권도 없는걸로 알고 있다. ("찰스 페졸드의 WPF"도 절판됐다.)다른 어지간한 개발서적들은 중고로 쉽게 구할 수 있지만, WPF 책은 중고로도 사기가 힘들다. WPF 쓰는데가 진짜 없기는 없나보다.그러던 와중에 정말 반갑게도 "WPF MVVM 일주일 만에 배우기"라는 신간이 출시 되었다. 지금 찾아보니 거의 10년만인 것 같네. 10년만에 WPF 책이 새로 나왔다는게 신기하다.다만 책의 분량이 좀..책만 두고 사진을 찍어서 크기가 짐작이 안갈텐데.. 일반적인 IT 개발서 크기가 아니고 그보다 작은 소설책 크기다. 페이지는 165페이지인데, 목차랑 찾아보기 빼고나면 140페이지 남짓. 책에서도 밝히고 있지만 이 책은 WPF의 모든 것을 다..
Visual Studio 2015에서 발생한 문제고, C# winform을 사용해서 프로그래밍을 하는 과정에서 발생한 문제다.대충 검색해보니깐, Visual Studio가 아닌 다른 응용프로그램에서도 발생하는 문제인 것 같다. 화면을 캡쳐해두지 않아서 비슷한 이미지를 찾아서 첨부했다.다만 내 경우에는 "매개 변수 이름"이 "key"가 아니고, "context"였다. 전체 메시지는값은 null일 수 없습니다. 매개 변수 이름: context 내가 만든 프로그램에서 다국어 버전을 위해서 Language는 한국어와 영어 이렇게 두 개를 지원하는데, Language 항목을 "영어"로 변경한 다음에 실행하려고 하면, 위에 첨부한 에러 메시지가 떴다. 재미있는건 Localizable 항목을 False로 변경한다음에..
일단 "FirewallAPI.dll" 파일을 참조로 추가해 줘야 된다. "FirewallAPI.dll" 파일은 "C:\Windows\System32" 폴더 밑에서 찾을 수 있다. 일단 FirewallManager 관련 클래스 using NetFwTypeLib; using System; namespace Test.Utils { class FirewallAppInfo { public bool mListAdded; // 방화벽 앱 목록에 추가되어있는지 여부 public bool mEnabled; // 방화벽 앱 목록에 '허용'으로 되어있는지 여부 } class MyFirewallManager { private const string CLSID_FIREWALL_MANAGER = "{304CE942-6E39-40..
한참을 삽질해서.. 혹시나 다른 누군가에게 도움이 싶어서 남기는 글.개발환경은 - OS : Windows10 64bit - IDE : Visual Studio 2015 Community - 윈폼, C#그동안 고정된 크기의 아이콘만 사용하다가 Multi-size 아이콘을 한 번 만들어봤다. (Multi-size 아이콘 변환 사이트 ☞ http://icoconvert.com/)뭐 이미 알고 있겠지만 작업표시줄에 보이는 아이콘은 Form의 속성에서 변경하는거고, 생성되는 .exe 파일의 아이콘은 프로젝트의 속성 페이지에서 변경해줘야 된다. 아이콘 디자인은 변경없고, .exe파일의 아이콘만 여러 해상도를 지원하는 Multi-size 아이콘으로 바꾼거라서 프로젝트의 속성페이지에서 아이콘을 변경했다. 그리고 다시 ..
콤보박스 선택된 인덱스의 변경이벤트를 위해서 SelectedIndexChanged 이벤트를 구현한다. 이 경우 소스코드를 통한 변경에도 SelectedIndexChanged 이벤트가 호출된다.경우에 따라 프로그램 코드를 통한 콤보박스 선택인덱스를 변경하는 경우에는 이벤트를 타지 않기를 원하는 경우가 있다. 아래 설명하는 내용은 사용자가 직접 콤보박스의 인덱스는 변경하는 경우에만 이벤트를 타도록 하는 방법이다. 1. Focused 프로퍼티를 이용하는 방법Focused 프로퍼티는 해당 컨트롤에 포커스가 있는지 여부를 조사한다. 사용자가 조작하는 경우에는 해당 컨트롤이 포커스를 받고있기 때문에 true가 된다. 이를 이용하는 코드는 아래와 같다. private void comboBox_name_Selected..
프로그램을 좀 더 이쁘게 꾸미고 싶어서 텍스트박스에 배경이미지를 넣고 싶었는데, C#의 텍스트박스는 기본적으로 배경이미지(Background Image)를 지원하지 않는다. 구글링을 통해서 몇 가지 방법을 찾았는데 딱히 적당한 방법이 없어서 일단은 배경이미지 없이 개발하기로 마음먹었다. 추후 다시한번 검토를 해본 뒤 적용할 예정이다.나중에 다시 구글링 하는 수고를 덜기위해서 찾아놓은 방법들을 정리해본다. 다만, 사전조사 차원에서 찾아본 것이라서 내용이 약간(?) 부실 할 수 있다. 추가적인 정보가 필요한 경우에는 링크를 참조하거나 관련 키워드로 검색해보면 될 것 같다. 1. Textbox 상속을 통한 paint 이벤트 오버라이드 TextBox를 상속받아서 새로운 TextBox를 만드는 방법. OnPain..
이미지 저작 툴.. 이라는 용어가 맞는지는 잘 모르겠는데,, 일단 개발한 프로그램은 텍스트를 입력하고, 사진의 경로를 입력하면 최종적으로 입력한 글과 사진을 조합해서 하나의 이미지 파일로 만들어주는 그런 프로그램이다.뭐,, 프로그램도 같이 공개하고 싶은데,, 공개할정도로 완성도 있게 개발도 안되었고,,(디자인 작업이 너무 크다,,ㅠㅠ) 공개할만큼 범용적으로 쓸 수 있는 그런 프로그램도 아니라서,,혹시 나중에 필요해지면 그 때 조금 다듬어서 공개를 해볼까 싶다.아래 링크는 개발하면서 참고했던 사이트들이다. http://infodbbase.tistory.com/109 PictureBox 컨트롤의 이미지를 파일로 저장 https://msdn.microsoft.com/ko-kr/library/baw6k39s(v..
C#에서 윈폼 프로그래밍에서..안내메시지 같은 문자열을 소스에 직접 넣은 것 보다 리소스 파일(Resources.resx)을 이용하면 개발할 때는 조금 번거로울지 몰라도 나중에 수정하거나 유지보수 할 때 매우 편하다. 한 줄 짜리 메시지가 아니라 여러줄로 구성 된 문자열의 경우, 개행문자는 Shift + 엔터로 넣어주면 된다. (소스에 넣을 때 처럼 \n 문자를 이용하지 않는다.)참고로 내가 사용하는 Visual Studio 버전은 2015 커뮤니티 에디션.
C# Winform의 FormBorderStyle을 None으로 설정한 경우(또는 CreateParams를 통해서 WS_CAPTION 스타일 속성을 제거한 경우) 창을 최대화하게 되면 작업표시줄까지 덮어버리는 문제가 생긴다. 최대화 버튼을 클릭했을 때, 아래 코드를 사용해서 창을 최대화 시키면 이러한 문제가 발생하는데 Form.WindowState = FormWindowState.Maximized; 대략 두 가지 해결 방법이있다. 1. 직접 사이즈를 설정 말 그대로 폼의 사이즈를 직접 입력한다. 시스템속성을 통해서 WorkingArea를 조회 한 뒤에 해당 크기로 폼의 크기를 설정한다. 예제 코드는 아래 링크를 참조. http://www.devpia.com/MAEUL/Contents/Detail.aspx..
C# 윈폼 프로그래밍에서 사용자가 지정한 마지막 창 크기 및 위치 같은 정보를 저장하기 위해서 간단하게 ini 파일을 사용하기로 결정했다. winapi에는 이러한 기능을 하는 간단한 api가 있지만 C#에서 기본으로 제공하는 클래스에는 해당 기능을 하는 api가 없다. 하지만 해당 winapi를 import해서 사용할 수 있다. ※ 만약 신규로 프로젝트를 만드는 것이라면, Settings를 활용하자. 매우 편리하게 각종 설정항목을 저장할 수 있다. 사용방법도 정말 간편하다. 아래 유튜브 동영상 한 번 보면 바로 따라서 사용할 수 있다. ini 대신 아래 방법을 사용할 것을 적극 권장한다. 아래 링크에서 해당 api를 import해서 사용하는 클래스 예제를 확인할 수 있다. http://kindtis.ti..