0

RichTextBox私はすでにWPFでカスタムメイドのクラスをコーディングしています。RichTextBoxしかし、このをドラッグするときはいつでもドラッグ ハンドルとして使用できるように、この の左上隅に小さな Rectangle が必要です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
...

しかし、幅/長さ/塗りつぶしの色を指​​定する方法がわかりません。最も重要なのは、RichTextBoxRichTextBoxのアンカーポイントに関連する正確にゼロゼロです-つまり、その左上隅)

これまでに発生した最初のエラーは次のとおりです。

「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 に答える