성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>C# - ("Save File Dialog" 등의) 대화 창에 확장 속성을 보이는 방법</h1> <p> 아래와 같은 질문이 있군요. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Dialogbox 제목 추가 ; <a target='tab' href='https://social.msdn.microsoft.com/Forums/ko-KR/bafce89e-b921-4cd4-b45e-49b34f8b64ce/dialogbox-5122847785-5262844032?forum=dotnetko'>https://social.msdn.microsoft.com/Forums/ko-KR/bafce89e-b921-4cd4-b45e-49b34f8b64ce/dialogbox-5122847785-5262844032?forum=dotnetko</a> </pre> <br /> 닷넷에 기본 포함된 System.Windows.Forms.SaveFileDialog 타입은 다음과 같은 식의 (기본) 대화창을 보여줍니다.<br /> <br /> <img alt='dlg_with_ext_prop_1.png' src='/SysWebRes/bbs/dlg_with_ext_prop_1.png' /><br /> <br /> 만약, 파일의 확장 속성까지 편집할 수 있는 다음과 같은 식의 대화창을 보여주고 싶다면,<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='dlg_with_ext_prop_2.png' src='/SysWebRes/bbs/dlg_with_ext_prop_2.png' /><br /> <br /> 이제는 <a target='tab' href='http://www.sysnet.pe.kr/2/0/1516'>WindowsAPICodePack</a>의 힘을 빌려야 합니다. 이를 위해 NuGet 패키지 참조를 해야 하는데, 안 본 사이 ^^ WindowsAPICodePack 관련 라이브러리가 많이도 생겼습니다.<br /> <br /> 우선, 원래의 패키지를 거의 그대로 배포한 버전이 있고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Windows7APICodePack ; <a target='tab' href='https://www.nuget.org/packages/Windows7APICodePack/'>https://www.nuget.org/packages/Windows7APICodePack/</a> Install-Package Windows7APICodePack </pre> <br /> 이후 더 이상 유지 보수가 안 되고 있는 이것을 Aybe라는 개발자가 정리한 버전이 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > WindowsAPICodePack-Core ; <a target='tab' href='https://www.nuget.org/packages/WindowsAPICodePack-Core'>https://www.nuget.org/packages/WindowsAPICodePack-Core</a> Install-Package WindowsAPICodePack-Core Install-Package WindowsAPICodePack-ExtendedLinguisticServices Install-Package WindowsAPICodePack-Sensors Install-Package WindowsAPICodePack-Shell Install-Package WindowsAPICodePack-ShellExtensions </pre> <br /> 그런데, Visual Studio NuGet Manager에서 APICodePack으로 검색하면 현재 가장 상단에는 rpastric이라는 개발자가 배포하고 있는 (Aybe의 repo에서 fork한) 버전이 위치하고 있습니다. 일단 저는 이걸로 ^^ 설치해 보겠습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Install-Package Microsoft-WindowsAPICodePack-Shell -Version 1.1.3.3 </pre> <br /> 그다음, 코드를 다음과 같이 작성하면 끝!<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Microsoft.WindowsAPICodePack.Dialogs.CommonSaveFileDialog csfd = new Microsoft.WindowsAPICodePack.Dialogs.CommonSaveFileDialog(); <span style='color: blue; font-weight: bold'>csfd.SetCollectedPropertyKeys(true, new PropertyKey[] { SystemProperties.System.Author, SystemProperties.System.Keywords, SystemProperties.System.Title });</span> if (csfd.ShowDialog() != Microsoft.WindowsAPICodePack.Dialogs.CommonFileDialogResult.Ok) { return; } foreach (var prop in <span style='color: blue; font-weight: bold'>csfd.CollectedProperties</span>) { var propKey = prop.PropertyKey; if (propKey == SystemProperties.System.Author) { foreach (var author in prop.ValueAsObject as string []) { Trace.WriteLine("Author: " + author); } } else if (propKey == SystemProperties.System.Keywords) { foreach (var tag in prop.ValueAsObject as string[]) { Trace.WriteLine("Keyword: " + tag); } } else if (propKey == SystemProperties.System.Title) { Trace.WriteLine("Title: " + prop.ValueAsObject); } } </pre> <br /> <hr style='width: 50%' /><br /> <br /> NuGet에서 Microsoft-WindowsAPICodePack-Shell 참조 시 다음과 같은 오류가 발생할 수 있습니다.<br /> <br /> <div style='BACKGROUND-COLOR: #ccffcc; padding: 10px 10px 5px 10px; MARGIN: 0px 10px 10px 10px; FONT-FAMILY: Malgun Gothic, Consolas, Verdana; COLOR: #005555'> Could not install package 'Microsoft-WindowsAPICodePack-Core 1.1.3.3'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.5', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author. <br /> </div><br /> <br /> 왜냐하면, Microsoft-WindowsAPICodePack-Shell은 4.5.2 이후의 .NET Framework을 지원하기 때문인데 그것보다 낮은 경우 저런 의존성 문제가 발생합니다. 만약 하위 버전에서의 지원이 필요하다면 다른 APICodePack을 사용하면 됩니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
5819
(왼쪽의 숫자를 입력해야 합니다.)