C# 表格的宽度不能小于140像素。为什么?
我在Visual Studio 2012中创建了默认的Windows窗体应用程序项目。当我运行程序时,我看到表格的宽度不能小于140像素。为什么?如何克服这种奇怪的限制?用户将无法使用窗口顶部的最小化、最大化和关闭按钮。我不相信你能用这种巨大的形式改变这种行为。这是一个可用性的东西 如果删除边框,例如,通过将其设置为C# 表格的宽度不能小于140像素。为什么?,c#,winforms,width,C#,Winforms,Width,我在Visual Studio 2012中创建了默认的Windows窗体应用程序项目。当我运行程序时,我看到表格的宽度不能小于140像素。为什么?如何克服这种奇怪的限制?用户将无法使用窗口顶部的最小化、最大化和关闭按钮。我不相信你能用这种巨大的形式改变这种行为。这是一个可用性的东西 如果删除边框,例如,通过将其设置为None,可以通过执行以下操作以编程方式将其设置为所需的任意值: form.Width = [...]; 可以使用边框类型进一步调整窗体的大小:无、FixedToolWindow和
None
,可以通过执行以下操作以编程方式将其设置为所需的任意值:
form.Width = [...];
可以使用边框类型进一步调整窗体的大小:无、FixedToolWindow和SizableToolWindow。工具窗口也不允许你低于一定的数值,但是没有一个工具窗口允许你在2px以上做任何事情。您可以将其设置为低于该值的某个值,而不会出现异常,但它不会执行任何操作。我从不使用formborders。。我总是喜欢用FormBorderstyle。没有 要调整大小,必须添加一些代码 放置一个图片盒,在其中添加一个夹点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;
我正在寻找解决方案,最小尺寸(0,0)没有任何效果。我发现,将MinimumSize设置为(1,1)实际上解决了这个问题,在显示我的表单之后,它的大小正确地小于140px (ListView)上的列单击事件\u 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();
var topAnchor=\u csvLv.PointToScreen(新点(
_csvLv
.栏目
第()类
.其中(c=>c.DisplayIndexc.宽度),
0));
左=topAnchor.X;
Top=topAnchor.Y;
最小尺寸=新尺寸(1,1);
ClientSize=新大小(_csvLv.Columns[e.Column].Width,100);
ShowDialog();
试试这个。
自动调整编号
仅限AutosizeMode
FormBorderStyle SizableToolWindow检查表单设计器属性上MinimumSize属性的值window@Steve最小尺寸=0;0;在我的程序中,窗口的最小化、最大化和关闭按钮并不总是需要的,因此,由于窗体的宽度很小而看不到也没关系。但我还需要用户能够更改将鼠标光标悬停到边缘的表单的大小。但如果FormBorderStyle设置为None,这是不可能的…一个相当大的工具窗口将允许您降低到大约20像素。够了吗?是的,对不起。这很难。让我知道它是否有帮助?“但没有人会让你做任何超过2px的事情”。。。不是真的。我有一个没有边框的应用程序,但它不允许小于139x39的大小,至少在我设置Form.MinimumSize=新大小(1,1)之前是这样的,因为这是一个比所选解决方案更好的解决方案。MinimumSize有效。这个解决方案(MinimumSize=新尺寸(1,1))是最简单和可靠的。在与这个问题斗争了很多时间后,我终于可以用这个答案解决它。