C#
-
WPF Drag, Drop이 되는 ListBoxC#/WPF 2018. 2. 27. 09:45
이전 포스트(2018/01/30 - [C#/WPF] - WPF 한 ListView(ListBox)에서 Drag Drop)에서 ListBox에 Drag & Drop이 가능하도록 해보았었습니다. 하지만 단일 Item 만 Drag & Drop이 가능했었던 점, Drop이 될 위치가 보이지 않는 점 등 굉장히 기초적인 내용이였습니다. 이제 위에 서술된 내용 + 자잘한 내용등을 수정하여 재사용이 가능한 사용자 정의 컨트롤을 만들었습니다. ※ ListBox 의 Item 내용은 유일(Unique)해야 합니다. (Remove 관련) ※ Item을 꼭 GGData형으로 할 이유는 없으며, GGData 내부 Item의 형을 바꾸셔도 되고,GGData형을 사용하지 않을 경우 cs파일에서 GGData를 원하는 형으로 바꾸시면..
-
WPF ListView(ListBox) 드래그 하는 중 스크롤C#/WPF 2018. 1. 31. 11:06
※이 글은 ListView or ListBox에서 Drag기능을 구현한 다음 사용 가능합니다. ListView나 ListBox 컨트롤(List 컨트롤)에서 Item을 드래그 하며 순서를 바꾸는 도중, 현재 보이는 Item이 아닌 스크롤을 통해 이동하여 위치시켜야 하는 경우가 있습니다. Drag를 통해 List 컨트롤의 현재 Vertical Scroll을 옮기는 방법입니다. 해당 List 컨트롤에 DragOver EventHandler를 추가해줍니다. 123456789101112131415161718private void MyList_DragOver(object sender, DragEventArgs e){ ListView listView = sender as ListView; ScrollViewer sc..
-
WPF 한 ListView(ListBox)에서 Drag DropC#/WPF 2018. 1. 30. 10:47
WPF에서 ListView or ListBox(이하 List 컨트롤)와 같은 List 컨트롤 들에서 Item을 Drag, Drop하는 일이 자주 있습니다. 그런데 한글 자료로는 별로 없고 해외 자료들은 두 List 컨트롤 간에 Drag Drop이 주를 이루더군요. 그래서 여러 자료들을 찾고, 참고하여 한 List 컨트롤 내에서 Drag Drop으로 순서 바꾸기를 구현했습니다. 2018.01.29 - 아직 Item 사이에 커서가 위치한 상태로 Drop을 하면 맨 아래로 Drop되는 문제가 있습니다. 우선 List컨트롤에 아래의 EventHandler들을 추가해주어야 합니다.PreviewMouseLeftButtonDownPreviewMouseMoveDrop 또한 AllowDrop 속성을 True로 바꿔주어야..
-
WPF 새 윈도우 위치 지정C#/WPF 2018. 1. 5. 11:16
WPF에서 어떤 위도우에서 새로운 윈도우를 불러낼 때가 있습니다. 이 때 새 윈도우가 생성되는 위치는 프로그램이 첫 실행된 위치에서 생성되게 됩니다. 윈도우의 위치는 해당 윈도우의 Top 속성과 Left 속성으로 인해 결정되게 되는데(MSDN), 이 속성이 프로그램의 첫 실행시에 결정되는 것입니다. 그래서 원하는 곳에 윈도우를 띄우기 위해서는 Top과 Left 속성을 설정해주어야 합니다. 간단한 예로 호출하는 윈도우의 중앙에서 창이 생성되도록 하는 코드입니다. 123456789private void Information_Click(object sender, RoutedEventArgs e){ InformationWindow informationWindow = new InformationWindow(); ..
-
WPF 실행파일 위치 알아내는 법C#/WPF 2017. 12. 29. 10:37
사용자가 프로그램을 사용할 때 현재 실행파일(.exe 파일)이 있는 위치는 사용자마다, 혹은 매번 다를 수 있습니다. 그렇기에 상대경로가 필요한데, 현재 실행파일의 위치를 기준으로 한 상대적 경로입니다. 하지만 결국 파일에 접근하기 위해서는 절대 경로가 필요한데, 현재 실행파일의 위치를 알려주는 속성이 있습니다. System.AppDomain.CurrentDomain.BaseDirectory ※ "using System" 선언 시 AppDomain.CurrentDomain.BaseDirectory 로 가능. string 형으로 현재 실행파일의 절대경로를 반환해주는데, 마지막\까지 포함된 상태로 반환됩니다. 아래는 간단한 예제입니다. 123456789101112131415private void ReadPe..
-
WPF 폰트(글꼴) 포함 배포C#/WPF 2017. 12. 20. 12:41
WPF로 프로그램을 만들어서 배포할 때에 프로그램에서 사용하는 글꼴이 사용자 컴퓨터에 없다면, 기본 글꼴로 바뀌게 된다. 그래서 이를 해결하기 위해 글꼴파일을 포함하여 배포하려한다. 이미지파일을 포함하여 배포하듯, 글꼴파일도 프로젝트에 포함시키면 되는 것이였다. (※단, exe파일에 같이 포함시키려면, 이미지파일과 같이 빌드 작업 을 Resource로 해주어야 한다. 이와 같이 프로젝트에 포함시켜 준 뒤 Label이나 TextBox 등에서 FontFamily 속성을 설정해주면 된다. 1 하지만 일반 이미지 파일을 넣듯 "Fonts\Daum_Regular.tff" 로 할 시에는 적용되지 않는다. 찾아본 결과 글꼴은 원래 글꼴 이름 앞에 #을 붙인 형태로 넣어야 한다고 한다. (ex. #나눔고딕) p.s. ..
-
WPF FontDialogC#/WPF 2017. 7. 18. 11:10
WPF에서 FontDialog를 사용하려면 꼭 System.Windows.Forms에 있는 FontDialog를 사용했어야 했습니다.(이전 글에서 설명 링크) 그런데 윈도우 7에서 .otf형식의 확장자를 사용하다보니 중간에 문제가 발생했습니다. 윈도우 10에서는 문제가 없었는데 말이죠. 그래서 Font Dialog를 직접 만들게 되었습니다. 급하게 필요한 기능만을 모아 간단하게 만들었습니다. 코드는 git hub에 올려두었습니다. (링크) .net framework 3.5 버전 이상이 설치되어 있으면 가능하며, 윈도우 7 부터는 3.5버전이 기본 설치되어 모두 사용 가능합니다. 버전 1의 코드를 여기에 올려놓겠습니다. 12345678910111213141516171819202122232425262728 ..