C# FlowLayoutPanel仅在垂直方向自动调整大小?
我正在C# FlowLayoutPanel仅在垂直方向自动调整大小?,c#,winforms,visual-studio,C#,Winforms,Visual Studio,我正在FlowLayoutPanel中动态加载图像。我需要这个面板自动大小,但只有垂直 这可能吗?如果可能,我该如何实现它?简单地说,添加一个control added类型的事件: private void flowLayoutPanel1_ControlAdded(object sender, ControlEventArgs e) { if (flowLayoutPanel1.Controls.Count % 10 == 0) flowLayoutPanel1.Set
FlowLayoutPanel
中动态加载图像。我需要这个面板自动大小,但只有垂直
这可能吗?如果可能,我该如何实现它?简单地说,添加一个control added类型的事件:
private void flowLayoutPanel1_ControlAdded(object sender, ControlEventArgs e)
{
if (flowLayoutPanel1.Controls.Count % 10 == 0)
flowLayoutPanel1.SetFlowBreak(e.Control as Control, true);
}
设置AutoSize=true
设置
flowdirection=LeftToRight
我从面板上手动设置了大小。例如:
它对我有用。Thx all这看起来可能是一个丑陋的解决方案,但它对我有效:
int i = _panel1.Width;
_panel1.AutoSize = true;
_panel1.AutoSizeMode = AutoSizeMode.GrowOnly;
/*some action going on here*/
_panel1.AutoSize = false;
_panel1.Size = new Size(_panel1.Width, 80);
会帮助你的。有可能吗?您试过了吗?我只从flowLayoutPanel=true设置了AutoSize属性;但是面板“水平增加”在添加到True的控件上设置FlowBreak属性。如果您在代码中添加它们,则使用面板的SetFlowBreak()方法。您也可能会被问到这个问题,该问题涉及FlowLayoutPanel中的图片缩放:
int newHeight=listImages.Count/10*100代码>与intnewHeight=listImages相同。计数*10代码>我知道,但int newHeight=listImages.Count/10*100;更好的理解是10是每行的图片数,100是每行的高度提示:它甚至更易于阅读和维护:int newHeight=listImages.Count/numberOfPicturesPerLine*picturehight
,定义为const int numberOfPicturesPerLine=10代码>这将以垂直方式添加控件,但是列表现在比我的面板大,并且我的滚动条不见了,我如何重新获取它?@Giancarlo您的滚动条不显示可能有多种原因。所有这些都是设置每行控件的数量。我建议做一些进一步的研究和修补,如果你还在挣扎,问一个新问题。
int i = _panel1.Width;
_panel1.AutoSize = true;
_panel1.AutoSizeMode = AutoSizeMode.GrowOnly;
/*some action going on here*/
_panel1.AutoSize = false;
_panel1.Size = new Size(_panel1.Width, 80);
FlowLayoutPanel1.WrapContents = False;
FlowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;