RadGanttView进度

时间:2015-10-11 08:18:47

标签: c# winforms telerik

我正在使用RadGanttView。这是我的代码:

foreach (string[] data in CreatedClasses.Data_Control.scheduleList)
{
    GanttViewDataItem item = new GanttViewDataItem();
    item.Start = DateTime.Parse(data[4]); item.End = DateTime.Parse(data[5]);
    item.Title = data[2]; item.Tag = data[0]; item.Progress = decimal.Parse(data[9]);
    ganttChartSched.Items.Add(item);
}

现在我想禁止用户选择低于项目设置进度的进度。

请有人帮我这个。我似乎找不到ItemProgressChanging的事件。

1 个答案:

答案 0 :(得分:0)

用户可以通过上下文菜单更改进度。因此,您需要对其进行修改以防止出现意外的百分比。我建议隐藏默认的Progress项并添加你自己的。这是一个例子:

    void radGanttView1_ContextMenuOpening(object sender, GanttViewContextMenuOpeningEventArgs e)
    {
        GanttViewDefaultContextMenu ganttMenu = ((GanttViewDefaultContextMenu)e.Menu);
        ganttMenu.ShowProgress = false;

        RadMenuItem progressItem = new RadMenuItem("Progress");
        e.Menu.Items.Add(progressItem);

        for (decimal i = 0; i <= 100; i += ganttMenu.ProgressStep)
        {
            GanttViewMenuItem menuItem = new GanttViewMenuItem(i.ToString(), string.Format("{0:P0}", i / 100));
            progressItem.Items.Add(menuItem);
            menuItem.IsChecked = e.Item.Progress == i;
            menuItem.Click += progressMenuItem_Click;

            menuItem.Enabled = i > e.Item.Progress;
        }
    }

    private void progressMenuItem_Click(object sender, EventArgs e)
    {
        GanttViewMenuItem item = (GanttViewMenuItem)sender;
        radGanttView1.GanttViewElement.SelectedItem.Progress = int.Parse(item.Command);
    }