0

カスタムウィンドウを作成しています。ウィンドウのサイズを左または上から変更すると、技術的にはウィンドウの移動とサイズ変更が同時に行われます。この効果を作成する必要があります。コードを投稿しませんでした。閉じていなくても、ウィンドウが画面上をすばやくジャンプするだけです...しかし、サイズ変更と移動に使用するコードは次のとおりです。

private void SetMousePosition(MouseEventArgs Position) {
    MousePos = Position.Location;
}
private void SetRightPosition(MouseEventArgs Position) {
    MouseDif = new Point(PointToClient(MousePosition).X - this.Width, PointToClient(MousePosition).Y - this.Height);
}
private void StartDrag(MouseEventArgs e) {
    if (e.Button == MouseButtons.Left) {
        int x = this.Left + e.X - MousePos.X;
        int y = this.Top + e.Y - MousePos.Y;
        this.Location = new Point(x, y);
    }
}
private void StartRightResize(MouseEventArgs e) {
    if (e.Button == MouseButtons.Left)
    {
        title.Text = PointToClient(MousePosition).X.ToString();
        int x = PointToClient(MousePosition).X - MouseDif.X;
        if (x < 60) x = 60;
        this.Width = x;
    }
}

これは、ドラッグと右の境界線からのサイズ変更のためだけに使用するコードです。左の境界線を使用してサイズを変更できるようにする必要があります...ユーザーコントロールとカスタムウィンドウを操作できるようにするためにもこれが必要ですが、意味のあるIDはわかりません...

4

2 に答える 2

0

これを見てください:

Windowsフォームでカスタム境界線を描画する

于 2012-04-22T03:22:38.647 に答える
0

SetBounds1回の操作でサイズと位置を変更できる方法を試しましたか?これにより、コントロールが頻繁に再描画されるのを防ぐことができます。

もちろん、コントロールの画像を作成し(BitBlt)、コントロールを非表示にし、そのプレースホルダーを使用してサイズを変更し、サイズ変更が終了したら、実際のコントロールの境界を設定して、再び表示できるようにする必要がある場合があります。

于 2012-04-22T03:46:42.643 に答える