Terminal.Gui控件文本超出边界:如何实现自动换行?
解决Terminal.Gui中Label文本自动换行问题
要让Label文本到达容器边缘自动换行,只需调整两个关键属性,修改后的代码如下:
Application.Init(); var top = Application.Top; var mainWindow = new Window("The") { X = 0, Y = 1, Width = Dim.Fill(), Height = Dim.Fill(), }; var frame1 = new FrameView(); frame1.Width = Dim.Percent(30, false); frame1.Height = Dim.Fill(); frame1.Title = "Archives"; mainWindow.Add(frame1); var frame2 = new FrameView(); frame2.Width = Dim.Percent(70, false); frame2.Height = Dim.Fill(); frame2.X = Pos.Right(frame1); frame2.Title = "Viewer"; mainWindow.Add(frame2); top.Add(mainWindow); Label lbl = new Label("helllllllo world helllllllo world helllllllo world ") { // 开启自动换行 WordWrap = true, // 宽度占满frame2的可用空间(也可根据需求设固定值) Width = Dim.Fill(), // 高度自动适配换行后的文本内容 Height = Dim.Fit() }; frame2.Add(lbl); Application.Run(); Application.Shutdown();
关键说明:
- WordWrap = true:这是实现自动换行的核心属性,开启后Label会在文本到达宽度边界时自动换行。
- Width = Dim.Fill():让Label宽度适配父容器(frame2)的可用宽度,也可根据需求设置固定宽度(比如你原来的10)。
- Height = Dim.Fit():自动计算并设置Label高度,确保所有换行后的文本都能显示,不会被截断。
内容的提问来源于stack exchange,提问作者user9634100
相关产品推荐
相关产品推荐

