WinForm 如何能让panel拖动边框,就是鼠标移动到panel边框上可以拖动改变panel大小?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm 如何能让panel拖动边框,就是鼠标移动到panel边框上可以拖动改变panel大小?相关的知识,希望对你有一定的参考价值。

参考技术A 可能是locked属性被设置成true了 那样panel就被锁定 改成false就可以了 参考技术B mousemove里面处理,判断当cursor的location在panel边缘时并且左键被按下,就调整panel的大小,具体大小可以根据原来的鼠标位置来计算.

在delphi中,在运行时如何让拖动的控件显示在最上方?

比如窗体上有panel1、panel2、panel3三个控件。可以拖动panel1到panel2上,也可以拖动panel2到panel1上。总之,可以让拖动那个控件能够位于其他的控件上方,而不是被别的控件遮住了。

参考技术A 我也最近才实现了这个功能,可以说是MPI窗口!
用PageControl控件可以实现,你把窗体的边框设为无边框,打开的时候最大化,每打开一个窗体就在主窗体的PageControl上面新建一个标签页,标签显示窗体的Caption属性,并把窗体的父控件设标签页,再在PageControl的标签双击事件中写入双击可以关闭当前标签页的事件就可以了!
参考技术B (Sender as TPanel).BringToFront; 参考技术C unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
procedure Panel1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
end;

var
Form1: TForm1;

implementation

$R *.dfm

procedure TForm1.FormCreate(Sender: TObject);
begin
RadioButton1.Caption := '置前';
RadioButton2.Caption := '置后';
RadioButton1.Checked := True;
Panel2.OnClick := Panel1Click;
Panel3.OnClick := Panel1Click;

Panel1.ParentBackground := False;
Panel1.Color := clRed;
Panel2.ParentBackground := False;
Panel2.Color := clLime;
Panel3.ParentBackground := False;
Panel3.Color := clBlue;
end;

procedure TForm1.Panel1Click(Sender: TObject);
begin
if RadioButton1.Checked then TPanel(Sender).BringToFront;
if RadioButton2.Checked then TPanel(Sender).SendToBack;
end;

end.
--------------------------------------------------------------------------------
窗体文件:
--------------------------------------------------------------------------------

object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 174
ClientWidth = 264
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 8
Top = 16
Width = 151
Height = 41
Caption = 'Panel1'
TabOrder = 0
OnClick = Panel1Click
end
object Panel2: TPanel
Left = 46
Top = 40
Width = 151
Height = 41
Caption = 'Panel2'
TabOrder = 1
end
object Panel3: TPanel
Left = 102
Top = 63
Width = 151
Height = 41
Caption = 'Panel3'
TabOrder = 2
end
object RadioButton1: TRadioButton
Left = 32
Top = 136
Width = 113
Height = 17
Caption = 'RadioButton1'
TabOrder = 3
end
object RadioButton2: TRadioButton
Left = 151
Top = 136
Width = 113
Height = 17
Caption = 'RadioButton2'
TabOrder = 4
end
end本回答被提问者采纳
参考技术D 去看下万一博客吧.
有这样的一个实类!

以上是关于WinForm 如何能让panel拖动边框,就是鼠标移动到panel边框上可以拖动改变panel大小?的主要内容,如果未能解决你的问题,请参考以下文章

winform 填充panel

C#中去掉winform边框如何拖动

c# winform panel 边框样式设置

winform panel面板在窗体里居中

C# WinForm的SplitContainer控件固定Panel大小

在delphi中,在运行时如何让拖动的控件显示在最上方?