2017-04-15 4 views

答えて

1

まず、キャンバスにMouseLeftButtonDownイベントを追加し、WPFにKeyDownイベントを追加する必要があります。

public MainWindow() 
    { 
     InitializeComponent(); 
     MyCanvas.MouseLeftButtonDown += MyCanvas_MouseLeftButtonDown; 
     this.KeyDown += MainWindow_KeyDown; 
    } 

左のマウスが線の1つをクリックすると、選択が強調表示されます。他の何かをクリックすると、前の選択を強調表示しなくてはなりません。

private Line _selectedLine; 
    private void MyCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     object testPanelOrUi = InputHitTest(e.GetPosition(this)) as FrameworkElement; 

     // if the selection equals _selectedLine, i.e. the line has been selected already 
     if (Equals(testPanelOrUi, _selectedLine)) return; 

     // The selection is different. 
     // if _selectedLine is not null, revert color change. 
     if (_selectedLine != null) 
     { 
      UnHighlightSelection(); 
     } 

     // if testPanelOrUi is not a line. 
     if (!(testPanelOrUi is Line)) return; 

     // The selection is different and is a line. 
     _selectedLine = (Line) testPanelOrUi; 
     HighlightSelection(_selectedLine); 
    } 

あなたHighlightSelection()UnHighlightSelection()は、以下同様とすることができる。

private void HighlightSelection(Line selectedob) 
    { 
     selectedob.Stroke = Brushes.Red; 
    } 

    private void UnHighlightSelection() 
    { 
     //if nothing has been selected yet. 
     if (_selectedLine == null) return; 

     _selectedLine.Stroke = Brushes.Black; 
     _selectedLine = null; 
    } 

次に、あなたがあなたのDeleteKeyDownアクションを定義することができます。 Deleteキーを押すと、選択を削除する必要があります。

private void MainWindow_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Delete) 
     { 
      DeleteLine(); 
     } 
    } 

    public void DeleteLine() 
    { 
     //if nothing has been selected yet. 
     if (_selectedLine == null) return; 

     //if the selection has been deleted. 
     if (!MyCanvas.Children.Contains(_selectedLine)) return; 

     UnHighlightSelection(); 
     MyCanvas.Children.Remove(_selectedLine); 
    } 
+0

えええええええええええええええええええええええええええええええええええええええん@Anthony – Ahmad

関連する問題