source(출처) -
MyUi.MouseEnter += new MouseEventHandler(TotalEvent);
private TotalEvent(object sender, MouseEventArgs e)
{
// 내용 입력
}
이런식으로 이벤트 처리기도 직접 생성하면 된다.
Captain Raccoon
2017년 7월 17일 월요일
WPF C# - mainwindow 접근
source(출처) -
다른 클래스에서 메인 윈도우의 요소에 접근
((MainWindow)System.Windows.Application.Current.MainWindow).myfun();
((MainWindow)System.Windows.Application.Current.MainWindow).mymember();
다른 클래스에서 메인 윈도우의 요소에 접근
((MainWindow)System.Windows.Application.Current.MainWindow).myfun();
((MainWindow)System.Windows.Application.Current.MainWindow).mymember();
WPF C# - as , () 캐스팅 연산자
source(출처) - https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/types/how-to-safely-cast-by-using-as-and-is-operators
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/invocation-operator
AS
개체는 다형성이므로 기본 클래스 형식의 변수는 파생 형식을 가질 수 있습니다. 파생 형식의 메서드에 액세스하려면 값을 파생 형식으로 다시 캐스팅해야 합니다. 그러나 이러한 경우 단순한 캐스팅을 시도하려면 InvalidCastException이 throw될 수 있는 위험을 감수해야 합니다. 이 때문에 C#은 is 및 as 연산자를 제공합니다. 이러한 연산자를 사용하면 예외를 throw시키지 않고 캐스트 성공 여부를 테스트할 수 있습니다. 일반적으로 캐스트가 성공하면 실제로 캐스트 값을 반환하는
실패시 값이 null로 저장
()
캐스트는 한 형식에서 다른 형식으로의 변환 연산자를 명시적으로 호출합니다. 이러한 변환 연산자가 정의되지 않은 경우 캐스트가 실패합니다. 변환 연산자를 정의하려면 explicit 및 implicit를 참조하세요.
실패시 매서드 호출
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/invocation-operator
AS
개체는 다형성이므로 기본 클래스 형식의 변수는 파생 형식을 가질 수 있습니다. 파생 형식의 메서드에 액세스하려면 값을 파생 형식으로 다시 캐스팅해야 합니다. 그러나 이러한 경우 단순한 캐스팅을 시도하려면 InvalidCastException이 throw될 수 있는 위험을 감수해야 합니다. 이 때문에 C#은 is 및 as 연산자를 제공합니다. 이러한 연산자를 사용하면 예외를 throw시키지 않고 캐스트 성공 여부를 테스트할 수 있습니다. 일반적으로 캐스트가 성공하면 실제로 캐스트 값을 반환하는
as 연산자가 훨씬 효율적입니다. is 연산자는 부울 값만 반환합니다. 따라서 이 연산자는 개체 형식을 결정하고 실제로 캐스트하지는 않는 경우에 사용할 수 있습니다.실패시 값이 null로 저장
()
캐스트는 한 형식에서 다른 형식으로의 변환 연산자를 명시적으로 호출합니다. 이러한 변환 연산자가 정의되지 않은 경우 캐스트가 실패합니다. 변환 연산자를 정의하려면 explicit 및 implicit를 참조하세요.
실패시 매서드 호출
2017년 6월 29일 목요일
WPF C# - Timer 타이머 사용하기
source(출처) - http://zheld.tistory.com/2
출처: http://zheld.tistory.com/2 [코딩을하자]
윈폼에는 Timer 라는 컨트롤이 있었는데 WPF에는 없다
using System.Windows.Forms 를 사용해 윈폼의 타이머를 사용해도 되지만
WPF의 타이머를 사용해보도록 하겠다
using System.Windows.Threading 을 사용한다
DispatcherTimer timer = new DispatcherTimer(); //객체생성
timer.Interval = TimeSpan.FromMilliseconds(0.01); //시간간격 설정
timer.Tick += new EventHandler(timer_Tick); //이벤트 추가
timer.Start(); //타이머 시작. 종료는 timer.Stop(); 으로 한다
private void timer_Tick(object sender, EventArgs e)
{
//여기에 실행시킬 구문을 입력하면 된다
}
출처: http://zheld.tistory.com/2 [코딩을하자]
WPF C# - Grid 동적 생성 관련
source(출처) - https://stackoverflow.com/questions/6056516/instantiating-array-and-instantiating-each-member-at-once
핵심 - var Column = Enumerable.Repeat(0, Column_size).Select(i => new ColumnDefinition()).ToArray();
핵심 - var Column = Enumerable.Repeat(0, Column_size).Select(i => new ColumnDefinition()).ToArray();
2017년 6월 11일 일요일
WPF Tutorial 강좌 번역 #9 - Command-line parameters in WPF
source(출처) - http://www.wpf-tutorial.com/wpf-application/command-line-parameters/
WPF Tutorial 강좌 번역 #9
명령 줄 매개 변수는 시작하려는 응용 프로그램에 매개 변수 집합을 전달하여 어떻게 든 영향을 줄 수있는 기술입니다. 가장 일반적인 예는 애플리케이션을 특정 파일 (예 : 편집기에서. 시작 메뉴에서 실행을 선택하거나 [WindowsKey-R]을 눌러 Windows의 기본 제공 메모장 응용 프로그램을 사용하여 직접 시도 할 수 있습니다.
notepad.exe c:\Windows\win.ini
이렇게하면 win.ini 파일이 열리면서 메모장이 열립니다. 시스템에 맞게 경로를 조정해야 할 수도 있습니다. 메모장은 하나 또는 여러 개의 매개 변수를 찾고이를 사용하므로 응용 프로그램이 동일하게 수행 할 수 있습니다!
명령 줄 매개 변수는 App.xaml 기사에서 구독 한 Startup 이벤트를 통해 WPF 응용 프로그램에 전달됩니다. 이 예제에서 동일한 작업을 수행 한 다음 전달 된 값을 메소드 인수를 통해 사용합니다.
위의 예제를 실행하면 명령 줄 매개 변수가 지정되지 않았으므로 아무 것도 발생하지 않습니다. 다행히도 Visual Studio를 사용하면 응용 프로그램에서이를 쉽게 테스트 할 수 있습니다. 프로젝트 메뉴에서 "[프로젝트 이름] 속성"을 선택하고 명령 줄 매개 변수를 정의 할 수있는 디버그 탭으로 이동하십시오. 다음과 같이 보일 것입니다 :

애플리케이션을 실행하면 매개 변수에 응답하는 것을 볼 수 있습니다.
물론, 그 메시지는 대단히 유용하지 않습니다. 대신 메인 윈도우의 생성자에 전달하거나 다음과 같이 공용 공개 메소드를 호출 할 수 있습니다.
이 예에서는 정확히 하나의 인수가 있는지 테스트하고, 그렇다면 인수를 파일 이름으로 사용합니다.
현실 세계의 예에서 여러 가지 인수를 수집하고 옵션을 위해 사용할 수도 있습니다.
특정 기능을 켜거나 끕니다.
진행해야 할 정보를 수집하는 동안 전달 된 전체 인수 목록을 반복함으로써이 작업을 수행 할 수 있지만이 문서의 범위를 벗어납니다.
WPF Tutorial 강좌 번역 #9
WPF의 명령 줄 매개 변수
명령 줄 매개 변수는 시작하려는 응용 프로그램에 매개 변수 집합을 전달하여 어떻게 든 영향을 줄 수있는 기술입니다. 가장 일반적인 예는 애플리케이션을 특정 파일 (예 : 편집기에서. 시작 메뉴에서 실행을 선택하거나 [WindowsKey-R]을 눌러 Windows의 기본 제공 메모장 응용 프로그램을 사용하여 직접 시도 할 수 있습니다.
notepad.exe c:\Windows\win.ini
이렇게하면 win.ini 파일이 열리면서 메모장이 열립니다. 시스템에 맞게 경로를 조정해야 할 수도 있습니다. 메모장은 하나 또는 여러 개의 매개 변수를 찾고이를 사용하므로 응용 프로그램이 동일하게 수행 할 수 있습니다!
명령 줄 매개 변수는 App.xaml 기사에서 구독 한 Startup 이벤트를 통해 WPF 응용 프로그램에 전달됩니다. 이 예제에서 동일한 작업을 수행 한 다음 전달 된 값을 메소드 인수를 통해 사용합니다.
<Application x:Class="WpfTutorialSamples.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Startup="Application_Startup"> <Application.Resources></Application.Resources> </Application>StartupUri 속성을 대체하여 Startup 이벤트에 가입하면됩니다. 이벤트는 App.xaml.cs에서 구현됩니다.
using System; using System.Collections.Generic; using System.Windows; namespace WpfTutorialSamples { public partial class App : Application { private void Application_Startup(object sender, StartupEventArgs e) { MainWindow wnd = new MainWindow(); if(e.Args.Length == 1) MessageBox.Show("Now opening file: \n\n" + e.Args[0]); wnd.Show(); } } }StartupEventArgs는 여기서 우리가 사용하는 것입니다. 응용 프로그램 시작 이벤트로 e라는 이름으로 전달됩니다. Args는 문자열 배열입니다. 명령 줄 매개 변수는 공백으로 구분됩니다 (공백이 따옴표로 묶인 문자열 안에 있지 않은 경우).
명령 줄 매개 변수 테스트

애플리케이션을 실행하면 매개 변수에 응답하는 것을 볼 수 있습니다.
물론, 그 메시지는 대단히 유용하지 않습니다. 대신 메인 윈도우의 생성자에 전달하거나 다음과 같이 공용 공개 메소드를 호출 할 수 있습니다.
using System; using System.Collections.Generic; using System.Windows; namespace WpfTutorialSamples { public partial class App : Application { private void Application_Startup(object sender, StartupEventArgs e) { MainWindow wnd = new MainWindow(); //OpenFile () 메소드는 당신이 무엇을 할 수 있는지에 대한 예제 일뿐입니다. //매개 변수. 메서드는 MainWindow 클래스에서 선언해야합니다. //전달 된 파일 경로를 처리하기 위해 다양한 메소드를 사용할 수 있습니다 if(e.Args.Length == 1) wnd.OpenFile(e.Args[0]); wnd.Show(); } } }Command-line의 가능성
이 예에서는 정확히 하나의 인수가 있는지 테스트하고, 그렇다면 인수를 파일 이름으로 사용합니다.
현실 세계의 예에서 여러 가지 인수를 수집하고 옵션을 위해 사용할 수도 있습니다.
특정 기능을 켜거나 끕니다.
진행해야 할 정보를 수집하는 동안 전달 된 전체 인수 목록을 반복함으로써이 작업을 수행 할 수 있지만이 문서의 범위를 벗어납니다.
WPF Tutorial 강좌 번역 #8 - App.xaml로 작업하기
source(출처) - http://www.wpf-tutorial.com/wpf-application/working-with-app-xaml/
WPF Tutorial 강좌 번역 #8
App.xaml은 응용 프로그램의 선언적 시작점입니다. Visual Studio는 App.xaml.cs. 코드 숨김 파일을 포함하여 새 WPF 응용 프로그램을 시작할 때 자동으로이 파일을 만듭니다. 두 파일이 부분 클래스 인 Window와 매우 비슷하게 작동하여 함께 작업하여 마크 업 (XAML)과 코드 숨김에서 모두 작업 할 수 있습니다.
App.xaml.cs는 WPF Windows 응용 프로그램의 중심 클래스 인 Application 클래스를 확장합니다. .NET은 지침을 시작하기 위해이 클래스로 이동 한 다음 원하는 창 또는 페이지를 시작합니다. 또한 응용 프로그램 시작, 처리되지 않은 예외 등과 같은 중요한 응용 프로그램 이벤트를 구독 할 수있는 곳이기도합니다.
App.xaml 파일에서 가장 일반적으로 사용되는 기능 중 하나는 전역 스타일과 같이 응용 프로그램 전체에서 사용 및 액세스 할 수있는 전역 리소스를 정의하는 것입니다. 이에 대해서는 나중에 자세히 설명합니다.
새 응용 프로그램을 만들 때 자동으로 생성 된 App.xaml은 다음과 같습니다.
어떤 경우에는 첫 번째 창이 표시되는 방법과시기를보다 자세히 제어해야합니다. 이 경우 StartupUri 속성과 값을 제거한 다음 코드 숨김에서 대신 수행 할 수 있습니다. 이것은 아래에서 설명 할 것입니다.
일치하는 App.xaml.cs는 일반적으로 새 프로젝트에서 다음과 같이 보입니다.
<예제>
WPF Tutorial 강좌 번역 #8
App.xaml로 작업하기
App.xaml은 응용 프로그램의 선언적 시작점입니다. Visual Studio는 App.xaml.cs. 코드 숨김 파일을 포함하여 새 WPF 응용 프로그램을 시작할 때 자동으로이 파일을 만듭니다. 두 파일이 부분 클래스 인 Window와 매우 비슷하게 작동하여 함께 작업하여 마크 업 (XAML)과 코드 숨김에서 모두 작업 할 수 있습니다.
App.xaml.cs는 WPF Windows 응용 프로그램의 중심 클래스 인 Application 클래스를 확장합니다. .NET은 지침을 시작하기 위해이 클래스로 이동 한 다음 원하는 창 또는 페이지를 시작합니다. 또한 응용 프로그램 시작, 처리되지 않은 예외 등과 같은 중요한 응용 프로그램 이벤트를 구독 할 수있는 곳이기도합니다.
App.xaml 파일에서 가장 일반적으로 사용되는 기능 중 하나는 전역 스타일과 같이 응용 프로그램 전체에서 사용 및 액세스 할 수있는 전역 리소스를 정의하는 것입니다. 이에 대해서는 나중에 자세히 설명합니다.
App.xaml 구조
<Application x:Class="WpfTutorialSamples.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application>여기서 주목해야 할 것은 StartupUri 속성입니다. 이것은 실제로 응용 프로그램이 시작될 때 시작할 창이나 페이지를 지시하는 부분입니다. 이 경우 MainWindow.xaml이 시작되지만 다른 창을 시작점으로 사용하려면 간단히 변경할 수 있습니다.
어떤 경우에는 첫 번째 창이 표시되는 방법과시기를보다 자세히 제어해야합니다. 이 경우 StartupUri 속성과 값을 제거한 다음 코드 숨김에서 대신 수행 할 수 있습니다. 이것은 아래에서 설명 할 것입니다.
App.xaml.cs 구조
일치하는 App.xaml.cs는 일반적으로 새 프로젝트에서 다음과 같이 보입니다.
using System; using System.Collections.Generic; using System.Windows; namespace WpfTutorialSamples { public partial class App : Application { } }이 클래스가 Application 클래스를 확장하는 방법을 볼 수 있으므로 응용 프로그램 수준에서 작업 할 수 있습니다. 예를 들어 시작 창을 수동으로 만들 수있는 Startup 이벤트에 가입 할 수 있습니다.
<예제>
<Application x:Class="WpfTutorialSamples.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Startup="Application_Startup"> <Application.Resources></Application.Resources> </Application>StartupUri가 Startup 이벤트에 대한 구독으로 어떻게 대체되었는지 확인합니다 (XAML을 통한 이벤트 구독은 다른 장에서 설명 함). code-behind에서 다음과 같은 이벤트를 사용할 수 있습니다.
using System; using System.Collections.Generic; using System.Windows; namespace WpfTutorialSamples { public partial class App : Application { private void Application_Startup(object sender, StartupEventArgs e) { // Create the startup window MainWindow wnd = new MainWindow(); // Do stuff here, e.g. to the window wnd.Title = "Something else"; // Show the window wnd.Show(); } } }StartupUri 속성을 사용하는 것과 비교하면이 예제의 멋진 점은 시작 창을 표시하기 전에 시작 창을 조작한다는 것입니다. 여기서 우리는 제목을 변경하는데, 그다지 유용하지는 않지만 이벤트에 가입하거나 스플래시 화면을 표시 할 수도 있습니다. 당신이 모든 통제를 가질 때, 많은 가능성이 있습니다. 이 튜토리얼의 다음 기사에서는이 중 몇 가지를 자세히 살펴볼 것이다.
피드 구독하기:
덧글 (Atom)