Windows Vista가 나오면서 UI측면에서 많은 변화가 있었습니다. 대화상자의 변화도 그 중에 하나라고 볼 수 있습니다. XP까지의 대화상자는 어떤 작업에 대한 메세지와 실행 여부를 묻는 버튼 정도로 구성되었다면 Vista부터는 위에서 보는 것처럼 다양한 Message를 보여줄 수 있고, UI도 다양하게 꾸밀 수 있고, 상황에 따라 여러가지 Command를 선택할 수 있게 하다거나 ProgressBar 등도 표시되는 것을 볼 수 있습니다. 이는 Windows Vista에 추가된 Task Dialog라는 새로운 대화상자 형태입니다. COMCTL32.Dll v6에 추가된 API입니다. MFC 10.0에는 TaskDialog API를 Wrapping한 CTaskDialog라는 클래스가 새로 추가된다고 합..
컬렉션이나 문자열을 반환할 때 보통 생각없이 Null을 리턴하는 경우가 있었는데 Microsoft의 Guideline에는 Mananged Code인 경우에 Null을 리턴하는 경우를 피하라고 하네요. 링크에 걸린 글에서 말하기를 1. Null을 리턴하는 경우에는 NullReferenceException이 발생할 가능성을 있기 때문이고, 2. Null을 리턴하는 경우와 빈 컬력션이나 빈 문자열을 반환할 경우 처리가 그리 다르지 않기 때문이며, 3. .NET Framework의 경우에도 예외적인 경우가 아닌 경우에는 Null에 대한 고려를 개발자가 할 필요가 없게 하기 위해 Null을 리턴하지 않는다고 합니다. 생각해보면 메소드에서 Null을 리턴하는 경우는 그 코드를 작성한 사람이 아닌 경우에 Null인 ..
이전 Component.DesignMode Property에서 말했던 방법이 결코 만능은 아닌 듯하다. 뭔가 이상하게 그 때는 제대로 Form에서는 보였는데 지금은 또 말썽이다. 이와 같은 문제와 관련된 Article을 구글링으로 찾아볼 수 있었다. Identifying the Run-Time and the Design Mode 이 글에서도 Component.DesgnMode와 LicenseManager.UsageMode, 그리고 Process 이름을 가지고 판별하는 세 가지 방법을 소개했는데 다 상황에 따라 달라서 범용적으로 적용하기가 애매하다. Designer에서 문제가 될 소지가 있는 코드는 생성자에서 제거하고 Public 메소드로 분리해서 상위 컨트롤에서 호출해주는게 제일 좋은 방법 같다.
UserControl을 상속받아서 어떤 컨트롤을 만들때, 때로는 Control이 Load되는 시점에서 DB로 부터 Control에 속한 ComboBox나 Grid를 초기화하는 코드들을 집어 넣어야 할 때가 있습니다. 그래서 OnLoad 함수를 오버로드하거나 이벤트 대리자 함수에서 위의 과정들을 구현하게 됩니다. 이제 UserControl이 만들어졌으니 마르고 닳도록 써먹어야지 하면서 Form위에도 올리고, 다른 UserControl에도 올립니다. 실행을 해보니 정상적으로 동작을 합니다. 하지만 해당 UserControl을 올린 Form의 Layout을 수정할 일이 생겨서 다시 Form의 디자이너 창을 띄웁니다. 그런데 이게 왠일? 이런 에러메세지가 나면서 작업을 할 수가 없게 됩니다. 이유는 아시겠지만 ..
위에 그림은 두 쿼리문의 실제실행계획입니다. 쿼리문은 동일한데 첫번째의 경우는 뭔가 매우 복잡한 과정을 거치고 있습니다. 과연 어떤 차이가 있을까요? 실제로 실행시킨 두 쿼리문은 다음과 같습니다. exec sp_executesql N'select [Buffer] from [Thumbnail] where [ID]=@ID',N'@ID nvarchar(36)',@ID=N'274E13CB-F01A-4924-801D-46A853792A69' exec sp_executesql N'select [Buffer] from [Thumbnail] where [ID]=@ID',N'@ID char(36)',@ID=N'274E13CB-F01A-4924-801D-46A853792A69' 두 쿼리문의 차이점을 찾으셨나요? 첫번째 쿼..
string name = "John 'A'"; dataView.RowFilter = string.Format("Name='{0}'", name); 이런 코드가 있다면 아마 에러가 날 것 입니다. 왜냐하면 John 'A'의 작은 따옴표가 문자열을 닫는 기호로 인식되기 때문이겠지요. 그렇다면 이런 경우에는 어떻게 처리해야 할까요? string name = "John ''A''"; 이렇게 작은따옴표를 두 번 써주게 되면 문자열로 인식하게 됩니다. 이 외에도 RowFilter Syntax에 대한 여러 Escape 처리에 관한 좋은 글이 있습니다. 더 자세한 내용이 알고 싶으시다면 DataView RowFilter Syntax(C#)이라는 글을 참고하세요.
WinForm에서는 친절하게도 PrintDialog라는 창을 통해 Print 설정을 조절할 수 있게 해주고 있습니다. 여기서 "기본설정"이라는 버튼을 누르면 또 이런 창이 뜨죠. 프린터 드라이버에서 지원하는 인쇄 기본 설정을 할 수 있는 창입니다. 이 글에서는 Winform에서 제공하는 PrintDialog창을 사용하지 않고, 이 창을 띄워보려는 건데요. 방법은 Win32 API의 DocumentProperties함수를 사용하면 됩니다. const int PRINTER_ACCESS_ADMINISTER = 0x00000004; const int PRINTER_ACCESS_USE = 0x00000008; const int STANDARD_RIGHTS_REQUIRED = 0x000F0000; const int..
Visual Studio 2005부터인가요? MicrosoftSoft는 Visual Studio에서 MSTest Framework을 지원하게 되었습니다. MSTest를 IDE에서 사용하면 Debugging하기 위해 따로 어떤 작업을 하지 않아도 IDE에서 지원을 해준다는 장점이 있습니다. 아무래도 대세는 TDD인가요? ^^ 뭐 암튼 좋습니다. MSTest를 쓰던 NUnit을 쓰던 TDD는 코드의 품질 보증이라는 긍정적인 효과가 있으니 배워서 나쁠 방법론은 아닌 것 같습니다. 근데 NUnit으로 테스트 코드를 작성하다 보면 보통 NUnit Gui를 쓰거나 하는데 테스트 코드 중에 빨간 불이 들어옵니다. 아차!! 뭐가 잘못 됐구나. 에러내용을 보고 소스코드를 찾아갑니다. 하지만 거기까지 입니다. 해당 코드가..
Managed 코드인 C#으로 작업하다 보면 자주 WIN32 API를 호출하거나 Unmanaged 코드로 작성된 Third Party 코드를 호출해야 할 경우가 생깁니다. 이럴 경우 MSDN을 열심히 뒤지거나 구글링을 해서 찾거나 아니면 직접 Header 파일을 열어보거나 합니다. 하지만 그런다고 해서 다 끝나는게 아니라 .NET용 Wrapper를 만들어야 할 경우도 있고 또 그렇다보면 Unmanaged타입과 적절한 Type 맞춰주는 것도 여간 번거로운 일이 아닐 수 없습니다. 근데 HeeJae's Blog에서 아주 멋진 Tool을 발견했습니다. 마이크로소프트 Visual Studio 개발팀에서 근무하시는 한국분이신 것 같은데 정말 멋지십니다. 아! 이 Tool은 이 분 옆 VB팀의 jared라는 분이 ..
WCF 서비스인 Apparelbase의 웹서비스를 Vista가 깔려 있는 내 노트북에서 호스팅 할 일이 생겼다. 업체에 데모를 나가야 하는데 내 노트북을 가져가야 한다고. (ㅡㅡ;) 그래서 IIS에서 늘상 하던대로 했는데 서비스가 안돈다. 404 에러가 나면서 설명에 다음과 같이 나온다. 웹 서버에 구성된 MIME(Multipurpose Internet Mail Extensions) 매핑 정책 때문에 요청된 페이지를 처리할 수 없습니다. 인터넷에서 찾아보니 Vista에서는 기본적으로 IIS에서 WCF의 호스팅이 해제되어 있다고 한다. WCF 호스팅을 IIS에서 지원하려면. 제어판 > 프로그램 및 기능 > Windows 기능 사용/사용안함 > Microsoft .NET Framework 3.0 에 보면 W..
- Total
- Today
- Yesterday
- parent
- 편드
- 종속성 속성
- SqlParameter
- XamlParseException
- Visual Studio 2010 RC
- XAML Power Toys
- SvcTraceViewer
- The P-Invoke Interop Assistant
- StarUML
- SqlDbType
- Component.DesignMode
- 수영하다
- 보드타러고고씽
- Windows Installer
- 얼그레이
- 부러질
- TaskDialog
- LicenseManager.UsageMode
- 만들어진신
- windows7
- XmlDataProvider
- WPF 바인딩
- debugging
- Windows Installer Cleanup
- Keane
- SyntaxHighlighter
- 북까페라고다조용한게아니더라
- Mole Visualizer
- designMode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |