You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在分组资源的Telerik WinForms RadScheduler时间线视图中设置固定行列宽高?

为Telerik UI for WinForms RadScheduler的时间线视图(按资源分组)设置固定行高和列宽

我来帮你搞定这个问题——在按资源分组的时间线视图里,默认的Resources per view属性确实会随资源数量自动调整行高,要实现固定行高和列宽,得用下面这些具体的方法:

一、固定资源行高

这里有两种常用的实现方式,你可以根据自己的场景选择:

方式1:通过ViewChanged事件动态设置

在窗体初始化的时候,给RadScheduler订阅ViewChanged事件,当切换到时间线视图时,直接修改视图元素的资源行高:

private void RadScheduler1_ViewChanged(object sender, EventArgs e)
{
    var timelineViewElement = radScheduler1.SchedulerElement.ViewElement as SchedulerTimelineViewElement;
    if (timelineViewElement != null)
    {
        // 把这里的50改成你需要的固定高度(单位:像素)
        timelineViewElement.ResourceRowHeight = 50;
        // 强制刷新视图,让设置立即生效
        radScheduler1.SchedulerElement.UpdateLayout();
    }
}

方式2:自定义视图元素(全局固定)

如果希望整个应用里的时间线视图都用固定行高,可以自定义SchedulerTimelineViewElement

public class CustomTimelineViewElement : SchedulerTimelineViewElement
{
    protected override void InitializeRows()
    {
        base.InitializeRows();
        // 设置固定行高
        this.ResourceRowHeight = 50;
    }
}

然后在RadSchedulerCreateViewElement事件里替换默认的视图元素:

private void RadScheduler1_CreateViewElement(object sender, CreateViewElementEventArgs e)
{
    if (e.ViewType == typeof(TimelineView))
    {
        e.ViewElement = new CustomTimelineViewElement();
    }
}

二、固定时间列宽度

这个就简单多了,直接获取时间线视图的实例,设置TimeSlotWidth属性为固定像素值就行:

// 获取当前的时间线视图
var timelineView = radScheduler1.GetView<TimelineView>();
// 设置固定列宽,比如100像素
timelineView.TimeSlotWidth = 100;

小提示

  • 设置完属性后,记得调用radScheduler1.Refresh()或者radScheduler1.SchedulerElement.UpdateLayout(),确保视图立刻更新
  • 如果你还保留了Resources per view的设置,固定行高会覆盖它的自动调整行为,所以可以根据需求决定是否保留该属性

内容的提问来源于stack exchange,提问作者Safrin

火山引擎 最新活动