닷넷
-
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# WPF에서 DataGrid에 데이터를 바인딩하는 간단한 예제닷넷/WPF 2023. 3. 9. 13:50
아래는 WPF의 DataGrid에 데이터를 바인딩하는 간단한 예제입니다. 이 예제에서는 Employee라는 클래스로 만든 EmployeeLists 리스트를 DataGrid에 바인딩합니다. namespace TEST_WPF.Models { public class Employee { public int Id { get; set; } public string Name { get; set; } public string Department { get; set; } public string Position { get; set; } public string TelNo { get; set; } public string TelNo2 { get; set; } public string Email { get; set; } }..
-
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..
-
C# WinForms DevExpress CheckedListBoxControl에 바인딩 된 아이템들 중에서 특정 아이템만 체크/미체크 안 되게 비활성화 하는 방법닷넷/WinForms 2023. 2. 24. 18:07
DevExpress의 CheckedListBoxControl에서 아이템들 전체가 선택이 안 되게 하는 방법은 CheckedListBoxControl를 비활성화 시키는 checkedListBoxControl1.Enabled = false; 를 한다. 전체 비활성화가 아닌, 일부 아이템만 선택이 안 되는 비활성화 시키는 방법은 CheckedListBoxControl의 GetItemEnabled 이벤트를 사용하면 된다. CheckedListBoxControl의 아이템들 중에서 특정 항목들만 체크/미체크가 안 되게 비활성화 하는 방법 예제 코드 // CheckedListBoxControl를 사용하는 화면의 소스 코드 파일에서 // CheckedListBoxControl에 데이터소스 바인딩 및 // 이벤트를 통해..
-
C# WPF에서 특정 컨트롤을 최상단에 표시하는 방법닷넷/WPF 2023. 2. 20. 14:05
WPF에서 특정 컨트롤을 최상단에 표시하려면 Panel.ZIndex Attached Property를 사용하여 해당 컨트롤의 Z 순서를 변경해야 합니다. Panel.ZIndex는 컨트롤의 Z 순서를 지정하는 데 사용됩니다. 이 속성을 사용하여 다른 컨트롤의 Z 순서보다 높은 값을 지정하면 해당 컨트롤이 다른 모든 컨트롤 위에 표시됩니다. 다음은 Panel.ZIndex를 사용하여 Button을 최상단에 표시하는 예제입니다. 위의 예제에서 첫 번째 Button에 Panel.ZIndex 속성을 지정하여 값을 1로 설정합니다. 두 번째 Button에는 Panel.ZIndex 속성을 지정하지 않으므로 값이 0으로 설정됩니다. 이 경우, 첫 번째 Button은 두 번째 Button 위에 표시됩니다. 다른 컨트롤을 ..
-
C# WPF에서 창을 최상단에 표시하는 방법닷넷/WPF 2023. 2. 20. 13:58
WPF에서 창을 최상단에 표시하는 방법은 Window 클래스의 Topmost 속성을 사용하는 것입니다. Topmost 속성은 창이 다른 창 위에 항상 최상위로 유지되도록 지정합니다. 창을 최상단에 표시하려면 Window 인스턴스의 Topmost 속성을 true로 설정합니다. 예를 들어, 다음과 같이 작성할 수 있습니다. 또는 비하인드 코드에서 Topmost 속성을 변경할 수 있습니다. // 창을 최상단에 표시 myWindow.Topmost = true; 창을 최상단에 유지하는 것은 사용자 경험 측면에서 중요할 수 있지만, 불필요하게 창이 다른 애플리케이션의 창 위에 계속해서 표시되는 것은 사용자에게 방해가 될 수 있으므로 신중하게 사용해야 합니다.
-
C# WPF에서 웹브라우저를 최상단에 표시하는 방법닷넷/WPF 2023. 2. 20. 13:55
WPF에서 웹 브라우저를 항상 최상단에 표시하려면 다음과 같이 작성할 수 있습니다. 1. Window의 Topmost 속성을 true로 설정합니다. 2. WebBrowser 컨트롤을 추가하고, Window의 Content 속성으로 설정합니다. 3. Window의 Loaded 이벤트에서 WebBrowser 컨트롤의 Visibility 속성을 Hidden으로 설정합니다. private void Window_Loaded(object sender, RoutedEventArgs e) { webBrowser.Visibility = Visibility.Hidden; } 4. Window의 ContentRendered 이벤트에서 WebBrowser 컨트롤의 Visibility 속성을 Visible로 설정합니다. pri..
-
C# Winforms 직접 만든 달력 (커스텀 달력)닷넷/WinForms 2023. 1. 13. 10:22
Winforms 기본 도구에 있는 MonthCalendar나 DevExpress의 CalenarControl를 사용하기에는 요즘 트렌드에는 맞지 않는 UX가 있다. 만약 기간에 제한이 있다면 사용자는 한 번 클릭하면 앞 뒤로 가능한 날짜만 선택할 수 있게 하는 것이라던가 한번 클릭 후 다른 날을 클릭 하면 기간 선택이 되게 하는 기능이 기본적으로는 없기 때문이다. 숙박시설 예약이나 항공권 예약할 때 사용는 달력처럼 만들기 위해서 기존 것을 가지고 조금씩 수정하는게 나을 수도 있지만 수정하다보니 한도 끝도 없이 수정을 해야 할 판이어서 아예 직접 만들었다. 직접만든 것이니만큼 버그가 있을 수 있다. 이는 실사용에서 수정해나가면 될 것이다. 참고로 이 달력 코드에는 UserControl를 팝업하는 기능을 L..
-
C# WinForms DevExpress GridControl에 체크박스 칼럼 (헤더 포함) 추가하기닷넷/WinForms 2022. 12. 12. 16:17
2022.08.25 - [프로그래밍/C# (WinForms, ASP.NET)] - C# DevExpress GridControl 열 전체 선택, 헤더에 체크박스 넣는 법 C# DevExpress GridControl 열 전체 선택, 헤더에 체크박스 넣는 법 데브익스프레스 c# Winforms 에서 GridControl의 헤더 체크박는 넣는 방법 아래와 같이 소스파일에 코딩을 한다. #region 체크 박스 그리기 - DrawCheckBox(graphics, rectangle, isChecked) /// /// 체크 박스 그리기 /// jasmintime.com 이전에 쓴 내용이 있는데 이것보다 더 간단한 방법이 존재한다. DevExpress의 GridControl에서 GridView 속성에 이미 존재하는..