使用splitcontainer调整表单大小时出现问题

时间:2019-05-01 23:23:00

标签: vb.net splitcontainer txtextcontrol

Visual Studio 2019,Windows窗体和VB。 我有一个带有splitcontainer的表单,在一个面板中填充了一个richtextbox,在另一个面板中填充了一个第三方控件(txtextcontrol:一个能更好地处理表格的richtextbox替代品)来显示教科书和注释。我无法手动调整所有尺寸,因为我无法获得各种停靠和锚固选项来调整大小并将其放置在所需的位置,并且滚动时的速度比停靠时更快,更流畅。当我使用两个Richtextboxes时,一切都完美运行。但是我有一些表格显示不正确。

恐怕txtextcontrol是罪魁祸首,但是除非您付出高昂的代价,否则他们的网站提供的文档很少,并且没有技术支持。而且我不太确定这可能是原因,所以我在这里问您是否有任何想法。

问题是当我通过拖动Form1边框或最大化或规范化窗体来调整大小时,txtextcontrol不能正确更新自身,但这可能部分是更基本的问题(splitcontainer)的副作用拒绝更改其宽度。 在Form1_SizeChanged事件中,有以下几行:

SplitContainer1.Width = Me.Width - 32

SplitContainer1.Height = Me.Height - FlowLayoutPanel1.Height - 46

SplitContainer1.Top = FlowLayoutPanel1.Height 
'there's a row of floating buttons above the two panels

宽度不变,但高度和顶部不变。

如果我在子例程末尾重复width命令,有时它会在此时生效,而其他时候程序会崩溃并显示错误消息:“实例化枚举器后修改了集合”并尝试捕获错误使用Try ... Catch不能防止崩溃。我认为有时是在​​调用splitcontainer.moved事件然后触发resize事件(试图对splitcontainer进行更改)时触发该错误,但这似乎并不能一直作为解释。而且我不明白为什么高度会发生变化,而宽度却没有发生变化(不停靠,不涉及锚点)

如果我手动移动拆分器,它最终可能会解决问题; (我第一次移动它时,txtcontrol的大小正确,但是它仍然位于过于狭窄的面板中,无法显示所有内容。第二次我移动Splitter时,面板宽度也得到了校正,一切都很好,直到下一次调整大小。

有人能弄清楚发生了什么事,并给我提供解决方案的线索吗? txtextcontrol的dll是否有任何理由阻止它所在面板的尺寸调整(但是为什么它只会影响宽度?),或者只是分散了我的视线呢?我只是看不到?

1 个答案:

答案 0 :(得分:0)

选择SplitContainer,在属性中找到Anchor,然后将其设置为所有方向:上,左,右和下。

或者以编程方式,在Form1_Load中添加:

SplitContainer1.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or AnchorStyles.Right Or AnchorStyles.Bottom

请不要混淆,Or是一种运算符,其作用类似于按位运算符,可一次设置所有AnchorStyles标志。