0

我已经RichTextBox在 WPF 中编写了一个自定义类。但我需要在 this 的左上角有一个小矩形RichTextBox,以便在我想拖动RichTextBox.
所以我是这样开始的:

public class DragHandleRegtangle : Shape
    {
        public double len = 5;
        public double wid = 5;

        public DragHandleRegtangle()
        {
           //what should be here exactly, anyway? 
        }
    }
//Here goes my custom RichTextBox
public class CustomRichTextBox : RichTextBox
...

但我不知道如何指定它的宽度/长度/填充颜色,最重要的是它的位置RichTextBox(与 RichTextBox 的锚点相关的完全为零 - 即:它的左上角)

到目前为止,我遇到的第一个错误是:

“ResizableRichTextBox.DragHandleRegtangle”不实现继承的抽象成员“System.Windows.Shapes.Shape.DefiningGeometry.get”

如果有人可以帮助我定义我的矩形并解决此错误,我将不胜感激。

4

2 回答 2

2

将此写入您的代码

   protected override System.Windows.Media.Geometry DefiningGeometry
   {
      //your code
   }
于 2013-05-12T17:21:39.327 回答
1

WPF 框架有一个类可以满足您的需求。该类Thumb表示允许用户拖动和调整控件大小的控件。通常在制作自定义控件时使用。 Thumb 类的 MSDN 文档

以下是如何实例化拇指并连接一些拖动处理程序。

private void SetupThumb () {
  // the Thumb ...represents a control that lets the user drag and resize controls."
  var t = new Thumb();
  t.Width = t.Height = 20;
  t.DragStarted += new DragStartedEventHandler(ThumbDragStarted);
  t.DragCompleted += new DragCompletedEventHandler(ThumbDragCompleted);
  t.DragDelta += new DragDeltaEventHandler(t_DragDelta);
  Canvas.SetLeft(t, 0);
  Canvas.SetTop(t, 0);
  mainCanvas.Children.Add(t);
}

private void ThumbDragStarted(object sender, DragStartedEventArgs e)
{
  Thumb t = (Thumb)sender;
  t.Cursor = Cursors.Hand;
}

private void ThumbDragCompleted(object sender,      DragCompletedEventArgs e)
{
  Thumb t = (Thumb)sender;
  t.Cursor = null;
}
void t_DragDelta(object sender, DragDeltaEventArgs e)
{
  var item = sender as Thumb;

  if (item != null)
  {
    double left = Canvas.GetLeft(item);
    double top = Canvas.GetTop(item);

    Canvas.SetLeft(item, left + e.HorizontalChange);
    Canvas.SetTop(item, top + e.VerticalChange);
  }

}
于 2013-05-12T19:38:44.483 回答