C#
-
C# WinForms DevExpress AccordionControl 사용하기닷넷/WinForms 2023. 8. 23. 11:50
DevExpress의 AccordionControl은 사용자 인터페이스(UI)에서 네비게이션 및 그룹화된 정보를 표시하기 위해 사용되는 강력한 컨트롤입니다. 이 컨트롤은 대시보드, 패널 어플리케이션, 설정 페이지 등에서 유용하게 활용될 수 있습니다. AccordionControl은 주로 다음과 같은 특징을 갖습니다. 1. 그룹화 및 네비게이션: AccordionControl은 요소들을 그룹화하여 각 그룹의 헤더와 본문을 함께 표시합니다. 사용자는 그룹의 헤더를 클릭하거나 펼침/접힘 아이콘을 클릭하여 해당 그룹의 본문을 표시하거나 숨길 수 있습니다. 2. 커스텀 뷰: 각각의 그룹은 커스텀 뷰를 가질 수 있으며, 텍스트, 이미지, 버튼, 그리드 등 다양한 컨트롤을 포함할 수 있습니다. 3. 컨텍스트 버튼: ..
-
C# WPF DataGrid에 Row번호 출력 되는 칼럼 추가하기 (닷넷프레임워크 .net framework 4.0 기준)닷넷/WPF 2023. 8. 10. 14:58
닷넷5.0 이상 기준으로는 https://kaki104.tistory.com/808 DataGrid에 Row번호를 출력하기 별도의 3rd party 컨트롤을 사용하지 않는 경우 DataGrid를 많이 사용하는데, RowNumber를 출력하는 방법을 찾아보니 MVVM pattern에서 사용하기 쉬운 방법에 대해서 설명되어 있는 것이 없는 것 같아서 간 kaki104.tistory.com 이 글을 참고 하면 되지만, 닷넷프레임워크 4.0에서는 Microsoft.Xaml.Behaviors.Wpf 1.1.39를 설치할 수 없기 때문에 다음의 두 가지 방법이 있습니다. 비하인드 코드에서 /// /// ListDetail.xaml에 대한 상호 작용 논리 /// private void Loaded(object sen..
-
비주얼 스튜디오 2022에서 빌드된 프로그램이 관리자 권한으로 실행되게 하는 방법. app.manifest 파일 추가하기끄적이는/정보공유-IT 2023. 8. 3. 14:11
C# 프로젝트에서 빌드된 프로그램이 관리자 권한으로 실행되도록 하려면 애플리케이션 매니페스트 파일을 수정하여 관리자 권한을 요청하도록 설정해야 합니다. 프로젝트의 Properties에 app.manifest가 있는 경우에는 이 파일을 열어서 바로 수정하면 되지만 없는 경우에 app.manifest 파일을 추가하는 방법은 다음과 같습니다. 프로젝트에 app.manifest 파일 추가하는 방법 1) 프로젝트의 Properties를 우클릭 한 다음, [추가] > [새 항목] 클릭 2) 애플리케이션 매니페스트 파일 선택 후 [추가]하기 3) 아래 이미지처럼 Properties에 없었던 app.manifest 파일이, 아래 이미지와 같이 추가 됩니다. ↓↓↓ app.manifest 파일 수정하기 이제 app.ma..
-
Microsoft의 Text-to-Speech (TTS), Azure Cognitive Services를 C#에서 사용하는 방법닷넷/C# 2023. 7. 27. 10:07
TTS는 텍스트를 음성으로 변환시켜주는 기술이며, 이것을 서비스하고 API로 만든 회사들이 꽤 많이 있다. 그 중에서 Microsoft에서 제공하는 TTS를 사용하는 방법과 C#에서 적용하는 방법을 설명한다. Azure 사이트에서 1. 사이트 접속 및 계정 로그인 https://azure.microsoft.com/ko-kr/products/cognitive-services/text-to-speech Text to Speech – 현실적인 AI 음성 생성기 | Microsoft Azure AI 음성 생성기를 사용하여 합성된 음성을 사용하여 자연스럽게 말하는 앱 및 서비스를 빌드합니다. 텍스트 판독기 및 텍스트 음성 변환 기능을 사용하여 고객의 몰입도를 높일 수 있습니다. azure.microsoft.com..
-
C# Interlocked.Increment에 대한 고찰닷넷/C# 2023. 7. 20. 10:33
DB에서 인덱스를 자동증가 시키는 칼럼을 만들 수 있는 것처럼 C#에서 하나의 프로퍼티를 자동증가 인덱스로 만든 방법이 없을까 고민해보다가 챗GPT가 알려준 방법인 Interlocked.Increment를 사용했었다. 첫 번째 방법, 생성자에서 초기화 public class Info { // ... existing properties ... private static int currentIndex = 0; public int Index { get; } public Info() { Index = Interlocked.Increment(ref currentIndex); } } 두 번째 방법, 리스트에 추가할 때 인덱스 값 설정 public class Info { // ... existing propertie..
-
C# 기초지식, 정보 정리 (면접 질문 대비, 꼭 알아야 하는 것)닷넷/C# 2023. 4. 11. 18:38
미루고 미루었던, ChatGPT를 활용하면 좀 더 수월하게 작성할 수 있게 되었으므로, C#에 대해서 꼭 알아야 할 기초 지식과 정보를 정리하였습니다. (링크드인 C# 테스트를 오늘 해 봤는데 영어 독해를 잘 못 했다고 해도, 그 용어들에 대해 알았다면 쉬운 문제인데 정답을 맞추지 못한 문제들이 많아서 나의 부족을 깨닫고 다시 공부하고 정리할 겸 쓰는 건 안 비밀) 1. C#이란 C#(C-Sharp)은 Microsoft에서 개발한 객체 지향 프로그래밍 언어입니다. Anders Hejlsberg가 설계한 이 언어는 C++와 Java와 유사한 구문을 가지고 있으며, 현대적인 프로그래밍 언어의 기능을 제공합니다. C#은 .NET Framework와 함께 사용되어 다양한 종류의 Windows 응용 프로그램 개발..
-
C# WPF에서 Binding(바인딩)이란?닷넷/WPF 2023. 4. 7. 18:17
WPF에서는 MVVM 패턴을 지키는 게 중요합니다. 개인적으로 생각하기에는 이 MVVM 패턴대로 만들지 않을 것이라면 개발 속도로 봤을 때나 유지보수 적으로 봤을 때나 그냥 윈폼(WinForms)으로 만드는게 낫습니다. 따라서 바인딩은 MVVM 패턴을 지키며 WPF에서 애플리케이션을 만들 때 중요한 요소가 됩니다. 왜냐하면 WPF에서 바인딩(Binding)은 데이터 소스와 UI 요소 간의 연결을 뜻하기 때문입니다. 즉, 뷰와 뷰모델의 연결점입니다. 바인딩을 사용하면 소스의 데이터가 변경될 때 UI가 자동으로 업데이트되고, 반대로 UI에서의 변경 사항이 소스에 전달됩니다. 이렇게 함으로써 데이터와 UI 간의 동기화가 유지되어 개발자가 수동으로 UI를 업데이트할 필요가 없습니다. WPF에서는 XAML (eX..
-
C# 시간 계산 두 번 째 (TimeSpan, DateTimeOffset)닷넷/C# 2023. 4. 6. 10:54
2020.09.11 - [C#] - C# 시간 계산 (DateTime Add함수 월, 일, 시, 분 더하기 빼기) DateTime 형식일 때, DateTime의 Add함수를 이용 한 날짜, 시간 계산은 이전 글을 참고한다. DateTime, TimeSpan, DateTimeOffset을 사용하여 시간 계산을 수행하는 방법은 다음과 같다. using System; namespace DateTimeExample { class Program { static void Main(string[] args) { // 현재 시간 구하기 DateTime currentTime = DateTime.Now; Console.WriteLine($"현재 시간: {currentTime}"); //////////////////////..
-
C# JSON 파일 읽기/쓰기 (Deserialize/Serialize)닷넷/C# 2023. 4. 4. 16:02
2018.10.26 - [C#] - C# Json 파싱하기 전, 비주얼스튜디오 프로젝트에 Newtonsoft.Json 설치하기 2018.10.31 - [C#] - C# JSON 파싱하기 예전에 JSON 파일을 읽고 쓰는 것 보다 파싱하는 것을 먼저 작성을 했었는데 JSON 파일을 읽고 쓰는 방법은 다음과 같습니다. 1. Newtonsoft.Json 라이브러리를 사용하여 JSON 파일을 읽고 쓰는 방법 1) JSON 파일 읽기 using System.IO; using Newtonsoft.Json; // JSON 파일 경로 string filePath = "example.json"; // 파일 읽기 using (StreamReader r = new StreamReader(filePath)) { string ..
-
C# XML 파일 읽기/쓰기닷넷/C# 2023. 3. 28. 16:42
C#에서 XML 파일을 읽고 쓰는 방법은 여러 가지가 있습니다. 다음은 각 방법과 코드 예시입니다. 1. XmlReader를 사용하여 XML 파일을 읽고 쓰는 방법 1) XML 파일 읽기 (1) XmlReader를 사용하여 XML 파일을 읽습니다. using System.Xml; XmlReader xmlReader = XmlReader.Create("file.xml"); (2) XmlReader에서 필요한 데이터를 읽습니다. while (xmlReader.Read()) { if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "node") { // Do something with the data } } (3) XMLReader를 닫습니다...
-
C# WPF TextBlock이 렌더링 되지 않은 상태에서 ActualWidth 값이 계산되게 하는 방법닷넷/WPF 2023. 3. 28. 15:50
만약 TextBlock의 ActualWidth에 따라서 어떤 작업이 진행되어야 하는 경우에, 뷰모델에서는 이 TextBlock의 정보를 알 수 없는 경우에 말이다. 뷰모델에서 내부적으로 TextBlock을 정의하여 사용한다면 TextBlock이 렌더링이 된 것이 아니기 때문에 ActualWidth 값은 null일 수 밖에 없다. 이 경우에 ActualWidth 값을 알 수 있게 계산할 수 있는 방법이다. TextBlock textBlock = new TextBlock(); textBlock.FontSize = 14; textBlock.Text = SelectedText; textBlock.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity..
-
C# WinForms DataGridView 복사 후 워드에 저장하기닷넷/WinForms 2023. 3. 21. 17:47
2018.07.20 - [C#/WinForm] - C# DataGridView 엑셀 출력 빠르게 하기 (복사&붙여넣기) C# DataGridView 엑셀 출력 빠르게 하기 (복사&붙여넣기) 이전에 포스팅한 2017/05/24 - [프로그래밍/C#] - C# DataGridView 데이터 엑셀파일에 저장 using oledb 은 데이터그리드뷰의 데이터를 엑셀파일로 출력할 때 속도가 느리다는 단점이 있다. 어떻게 하면 빠르 jasmintime.com 여기서 DataGridView의 데이터를 클립보드에 저장한 걸 응용해서 Word에 붙여넣기하는 방식은 다음과 같습니다. // 데이터그리드뷰 전체 선택 dataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMod..
-
C# WPF TextBlock의 Text를 오른쪽에서 왼쪽으로 애니메이션(BeginAnimation, 롤링) 하는방법닷넷/WPF 2023. 3. 21. 13:10
1. MainWindow.xaml 뷰에는 텍스트를 입력하는 TextBox와 TextBox에 입력된 텍스트가 바인딩되는 TextBlock이 있습니다. 2. MainWindow.xaml.cs 뷰의 비하인드 코드에 TextBlock의 크기가 Canvas 크기를 넘어가면 애니메이션이 시작되고, 넘어가지 않으면 중지되는 StartRollingAnimation 메소드를 작성합니다. using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Animation; namespace WPF_TextBlocK_Rolling { /// /// MainWindow.xaml에 대한 상호 작용 논리 /// public pa..
-
[WPF WebBrowser] C#에서 자바스크립트 함수를 호출하거나 자바스크립트에서 C# 메소드를 호출하는 방법닷넷/WPF 2023. 3. 20. 16:50
2022.08.03 - [C#/WinForm] - WebBrowser 자바스크립트에서 C# 메소드를 호출하는 방법 WebBrowser 자바스크립트에서 C# 메소드를 호출하는 방법 namespace WindowsFormsApplication6 { // This first namespace is required for the ComVisible attribute used on the ScriptManager class. using System.Runtime.InteropServices; using System.Windows.Forms; // This is your form. public partial class Form1 : Form jasmintime.com WPF에서는 뷰와 뷰모델을 분리하여 호출하는 방..
-
C# 계산오류? 부동 소수점에 대해 알아보자닷넷/C# 2023. 3. 2. 15:57
최근에 닷넷 오픈모임방에서 질문이 하나 올라왔다. [????] [오후 5:53] C#에서 100-63.1 하면 36.9라는 결과가 나오는데 [????] [오후 5:53] 100-64.1을 하면 35.900000000000006 라는 결과가 출력됩니다 [????] [오후 5:53] 이유가 뭔지 알 수 있을까요? [????] [오후 5:53] 사진 [????] [오후 5:54] 제 PC가 이상한걸까요.. 아님 원래 그런걸까요.. 이렇게 나오는 원인은 근사치로 계산 되는 부동 소수점 때문이다. 100-64.1부터 근사치가 되는 이유는? 64.1은 십진수에서는 정확한 수이지만, 이진수에서는 정확하게 표현할 수 없는 수이다. 따라서 부동 소수점으로 표현할 때 근사치가 된다. 즉, 64.1을 이진수로 변환하면 10..