我在Visual Studio 2012中创建了默认的Windows窗体应用程序项目。当我运行程序时,看到窗体的宽度不能小于140像素。为什么?以及如何克服这种奇怪的限制?
答案 0 :(得分:7)
我一直在寻找解决方案,而且MinimumSize(0,0)没有任何效果。想通了,将MinimumSize设置为(1,1)实际上解决了问题,在显示我的表单后,它的大小正确小于140px。
应该触发弹出对话框的( ListView )_ csvLv上的列点击事件:
var topAnchor = _csvLv.PointToScreen(new Point(
_csvLv
.Columns
.OfType<ColumnHeader>()
.Where(c => c.DisplayIndex < e.Column)
.Sum(c => c.Width),
0));
Left = topAnchor.X;
Top = topAnchor.Y;
MinimumSize = new Size(1,1);
ClientSize = new Size(_csvLv.Columns[e.Column].Width, 100);
ShowDialog();
答案 1 :(得分:2)
用户将无法在该顶部使用窗口的最小化,最大化和关闭按钮。我不相信你可以用Sizable FormBorderStyle改变那种行为。这是一个可用性的东西。
如果删除边框,例如将其设置为None
,则可以通过以下方式将其设置为您想要的编程方式:
form.Width = [...];
您可以使用边框类型调整其他表单的大小:None,FixedToolWindow和SizableToolWindow。 ToolWindows也不会让你低于一定数量,但是None会让你做任何超过2px的事情。你可以将它设置为低于该值的某个值,而不会出现异常,但它不会做任何事情。
答案 2 :(得分:2)
试试这个。 自动调整否 AutosizeMode growOnly FormBorderStyle SizableToolWindow&lt; ==这个人做到了 我仍然可以移动窗体并调整它(宽度)减去tan 112
答案 3 :(得分:1)
我从不使用formborders ..我总是喜欢使用FormBorderstyle.None
要调整大小,您必须添加一些代码。
放一个pictureBox,在其中添加一个手柄img并将其放在角落里。
public Form1()
{
InitializeComponent();
pictureBox1.MouseDown += new MouseEventHandler(Form1_MouseDown);
pictureBox1.MouseMove += new MouseEventHandler(Form1_MouseMove);
pictureBox1.MouseUp += new MouseEventHandler(Form1_MouseUp);
}
void Form1_MouseUp(object sender, MouseEventArgs e)
{
isHolding = false;
}
void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (isHolding)
{
int diffX = this.Width - pictureBox1.Left;
int diffY = this.Height - pictureBox1.Top;
pictureBox1.Left += e.X - curX;
pictureBox1.Top += e.Y - curY;
this.Width = pictureBox1.Left + diffX;
this.Height = pictureBox1.Top + diffY;
}
}
void Form1_MouseDown(object sender, MouseEventArgs e)
{
isHolding = true;
curX = e.X;
curY = e.Y;
}
int curX = 0, curY = 0;
bool isHolding = false;