728x90
반응형

어떤 이유로 인해 오류 발생시 어플리케이션이 종료되는

현상을 막기 위한 코드입니다.

 

 

using System.Windows;

 

namespace WpfApp1

{

    /// <summary>

    /// App.xaml에 대한 상호 작용 논리

    /// </summary>

    public partial class App : Application

    {

        public App()

        {

            this.Dispatcher.UnhandledException       += this.Dispatcher_UnhandledException;

            this.Dispatcher.UnhandledExceptionFilter += this.Dispatcher_UnhandledExceptionFilter;

        }

 

        private void Dispatcher_UnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)

        {

            e.Handled = true;

        }

 

        private void Dispatcher_UnhandledExceptionFilter(object sender, System.Windows.Threading.DispatcherUnhandledExceptionFilterEventArgs e)

        {

            e.RequestCatch = true;

        }

    }

}

 

728x90
반응형
728x90
반응형

Panel 안의 모든 Button 에 같은 이벤트를 적용하는 방법입니다.

우선 각각 버튼에 이벤트를 주는 경우는 아래와 같습니다.

 

        public MainWindow()

        {

            InitializeComponent();

 

            StackPanel stack = new StackPanel();

            Content = stack;

            Random rand = new Random();

            for (int i = 0; i < 10; i++)

            {

                Button btn = new Button();

                btn.Name = ((char)('A' + i)).ToString();

                btn.FontSize += rand.Next(10);

                btn.Content = "Button " + btn.Name + " says 'Click me'";

                btn.Click += ButtonOnClick;

                stack.Children.Add(btn);

            }

        }

 

        void ButtonOnClick(object sender, RoutedEventArgs args)

        {

            Button btn = args.Source as Button;

            MessageBox.Show("Button " + btn.Name + " has been clicked", "Button Click");

        }

 

AddHandler 와 RoutedEventHandler 를 사용해 아래 처럼 하면 위 처리한 방식과 같은 처리가 가능합니다.

* 모든 버튼의 ClickEvent 를 하나의 이벤트(ButtonOnClick)로 연결시켜줍니다.

 

        public MainWindow()

        {

            InitializeComponent();

 

            StackPanel stack = new StackPanel();

            Content = stack;

            Random rand = new Random();

            for (int i = 0; i < 10; i++)

            {

                Button btn = new Button();

                btn.Name = ((char)('A' + i)).ToString();

                btn.FontSize += rand.Next(10);

                btn.Content = "Button " + btn.Name + " says 'Click me'";

                stack.Children.Add(btn);

            }

 

            stack.AddHandler(Button.ClickEvent, new RoutedEventHandler(ButtonOnClick));

        }

 

        void ButtonOnClick(object sender, RoutedEventArgs args)

        {

            Button btn = args.Source as Button;

            MessageBox.Show("Button " + btn.Name + " has been clicked", "Button Click");

        }

 

 

728x90
반응형
728x90
반응형

프로젝트에 특정 이미지 파일을 추가한 후

아래 처럼 사용하면 접근할수 있습니다.

 

* 이미지 파일명 (keisoft_textlogo.jpg)

 

        public MainWindow()

        {

            InitializeComponent();

 

            Title = "Show My Face";

            Uri uri = new Uri("pack://application:,,,/keisoft_textlogo.jpg");

            BitmapImage bitmap = new BitmapImage(uri);

            Image img = new Image();

            img.Source = bitmap;

            img.Stretch = Stretch.Fill;

            Content = img;

        }

 

 

728x90
반응형

+ Recent posts