■ 잘라내기, 복사하기, 그리고 붙여넣기
------------------------------------------------------------------------------------------------------------------------
▶ 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 } }
|
------------------------------------------------------------------------------------------------------------------------
'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 |
댓글을 달아 주세요