728x90
반응형
728x170
▶ MainWindow.cs
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace TestProject
{
/// <summary>
/// 메인 윈도우
/// </summary>
public class MainWindow : Window
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Protected
#region Field
/// <summary>
/// 잘라내기 메뉴
/// </summary>
protected MenuItem cutMenuItem;
/// <summary>
/// 복사하기 메뉴
/// </summary>
protected MenuItem copyMenuItem;
/// <summary>
/// 붙여넣기 메뉴
/// </summary>
protected MenuItem pasteMenuItem;
/// <summary>
/// 지우기 메뉴
/// </summary>
protected MenuItem deleteMenuItem;
#endregion
////////////////////////////////////////////////////////////////////////////////////////// Field
#region Field
/// <summary>
/// 텍스트 블럭
/// </summary>
private TextBlock textBlock;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainWindow()
/// <summary>
/// 생성자
/// </summary>
public MainWindow()
{
Width = 800;
Height = 600;
Title = "잘라내기, 복사하기, 그리고 붙여넣기";
FontFamily = new FontFamily("나눔고딕코딩");
FontSize = 16;
DockPanel dockPanel = new DockPanel();
Content = dockPanel;
Menu menu = new Menu();
dockPanel.Children.Add(menu);
DockPanel.SetDock(menu, Dock.Top);
this.textBlock = new TextBlock();
this.textBlock.Text = "샘플 클립보드 텍스트";
this.textBlock.HorizontalAlignment = HorizontalAlignment.Center;
this.textBlock.VerticalAlignment = VerticalAlignment.Center;
this.textBlock.FontSize = 32;
this.textBlock.TextWrapping = TextWrapping.Wrap;
dockPanel.Children.Add(this.textBlock);
#region Edit 메뉴
MenuItem editMenuItem = new MenuItem();
editMenuItem.Header = "_Edit";
editMenuItem.SubmenuOpened += editMenuItem_SubmenuOpened;
menu.Items.Add(editMenuItem);
#endregion
#region Cut 메뉴
this.cutMenuItem = new MenuItem();
this.cutMenuItem.Header = "Cu_t";
this.cutMenuItem.Click += cutMenuItem_Click;
Image cutImage = new Image();
cutImage.Source = new BitmapImage(new Uri("pack://application:,,,/IMAGE/CutHS.png"));
this.cutMenuItem.Icon = cutImage;
editMenuItem.Items.Add(this.cutMenuItem);
#endregion
#region Copy 메뉴
this.copyMenuItem = new MenuItem();
this.copyMenuItem.Header = "_Copy";
this.copyMenuItem.Click += copyMenuItem_Click;
Image copyImage = new Image();
copyImage.Source = new BitmapImage(new Uri("pack://application:,,,/IMAGE/CopyHS.png"));
this.copyMenuItem.Icon = copyImage;
editMenuItem.Items.Add(this.copyMenuItem);
#endregion
#region Paste 메뉴
this.pasteMenuItem = new MenuItem();
this.pasteMenuItem.Header = "_Paste";
this.pasteMenuItem.Click += pasteMenuItem_Click;
Image pasteImage = new Image();
pasteImage.Source = new BitmapImage(new Uri("pack://application:,,,/IMAGE/PasteHS.png"));
this.pasteMenuItem.Icon = pasteImage;
editMenuItem.Items.Add(this.pasteMenuItem);
#endregion
#region Delete 메뉴
this.deleteMenuItem = new MenuItem();
this.deleteMenuItem.Header = "_Delete";
this.deleteMenuItem.Click += deleteMenuItem_Click;
Image deleteImage = new Image();
deleteImage.Source = new BitmapImage(new Uri("pack://application:,,,/IMAGE/DeleteHS.png"));
this.deleteMenuItem.Icon = deleteImage;
editMenuItem.Items.Add(this.deleteMenuItem);
#endregion
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Public
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
[STAThread]
public static void Main()
{
Application application = new Application();
application.Run(new MainWindow());
}
#endregion
////////////////////////////////////////////////////////////////////////////////////////// Instance
//////////////////////////////////////////////////////////////////////////////// Protected
#region Cut 메뉴 클릭시 처리하기 - cutMenuItem_Click(sender, e)
/// <summary>
/// Cut 메뉴 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
protected void cutMenuItem_Click(object sender, RoutedEventArgs e)
{
copyMenuItem_Click(sender, e);
deleteMenuItem_Click(sender, e);
}
#endregion
#region Copy 메뉴 클릭시 처리하기 - copyMenuItem_Click(sender, e)
/// <summary>
/// Copy 메뉴 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
protected void copyMenuItem_Click(object sender, RoutedEventArgs e)
{
if(this.textBlock.Text != null && this.textBlock.Text.Length > 0)
{
Clipboard.SetText(this.textBlock.Text);
}
}
#endregion
#region Paste 메뉴 클릭시 처리하기 - pasteMenuItem_Click(sender, e)
/// <summary>
/// Paste 메뉴 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
protected void pasteMenuItem_Click(object sender, RoutedEventArgs e)
{
if(Clipboard.ContainsText())
{
this.textBlock.Text = Clipboard.GetText();
}
}
#endregion
#region Delete 메뉴 클릭시 처리하기 - deleteMenuItem_Click(sender, e)
/// <summary>
/// Delete 메뉴 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
protected void deleteMenuItem_Click(object sender, RoutedEventArgs e)
{
this.textBlock.Text = null;
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Private
#region Edit 메뉴 하위 메뉴 오픈시 처리하기 - editMenuItem_SubmenuOpened(sender, e)
/// <summary>
/// Edit 메뉴 하위 메뉴 오픈시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void editMenuItem_SubmenuOpened(object sender, RoutedEventArgs e)
{
this.cutMenuItem.IsEnabled = this.copyMenuItem.IsEnabled = this.deleteMenuItem.IsEnabled = this.textBlock.Text != null && this.textBlock.Text.Length > 0;
this.pasteMenuItem.IsEnabled = Clipboard.ContainsText();
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] TreeView 클래스 사용하기 (0) | 2018.03.24 |
---|---|
[C#/WPF] ToolBarTray 클래스 사용하기 (0) | 2018.03.24 |
[C#/WPF] ToolBar 클래스 사용하기 (0) | 2018.03.24 |
[C#/WPF] ContextMenu 클래스 : 컨텍스트 메뉴 표시하기 (0) | 2018.03.24 |
[C#/WPF] RoutedUICommand 클래스 : 메뉴 명령 실행하기 (0) | 2018.03.22 |
[C#/WPF] 잘라내기, 복사하기, 그리고 붙여넣기 (0) | 2018.03.21 |
[C#/WPF] Menu 클래스 : 색상 그리드 박스 메뉴에서 색상 선택하기 (0) | 2018.03.18 |
[C#/WPF] Menu 클래스 : 색상 선택하기 (0) | 2018.03.18 |
[C#/WPF] ListBox 클래스 : ItemsPanel 속성을 사용해 색상 휠 박스 만들기 (0) | 2018.03.18 |
[C#/WPF] ListBox 클래스 : ItemsPanel 속성을 사용해 색상 그리드 박스 만들기 (0) | 2018.03.18 |
[C#/WPF] ListBox 클래스 : ItemTemplate 속성을 사용해 색상 리스트 박스 만들기 (0) | 2018.03.18 |
댓글을 달아 주세요