【发布时间】:2020-11-22 06:32:13
【问题描述】:
我的程序中有一个自定义用户控件。这是一个需要从左侧调整大小的面板。这是我的代码:
private void ResizePanel_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left && e.X == ClientRectangle.Left)
{
resizeMode = true;
}
}
private void ResizePanel_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
resizeMode = false;
}
}
private void ResizePanel_MouseMove(object sender, MouseEventArgs e)
{
if (resizeMode == true)
{
Size newSize = new Size();
newSize.Height = Height;
newSize.Width = Math.Abs(e.X - ClientRectangle.Left); // Distance between the mouse position and
// left side of the panel
if (e.X < this.ClientRectangle.Left)
{
Width = newSize.Width;
Left -= newSize.Width;
}
}
}
理论上,解决方案是随着宽度的增加将面板向左移动新宽度。这就是这段代码应该做的。目前的问题是,当面板向左移动时,宽度保持不变并且不会增加。有没有办法做到这一点,这样我就可以抓住左侧的控件并向左拖动,这样尺寸就会增加并且它似乎保持在原位?
【问题讨论】:
-
如果您需要在运行时调整自定义控件的大小,您可以使用标准功能。从这个可调整大小的控件中获取一些建议:Creating Custom Picturebox with Draggable and Resizable Selection Window
标签: c# resize controls runtime panel