提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:黄竹雯|2018-10-23 15:21:00.000|阅读 442 次
概述:本文的分步指南向我们的甘特图组件VARCHART XGantt用户展示了如何设计清晰排列的工具提示。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
VARCHART XGantt是一个交互式的甘特图控件,其模块化的设计让您可以创建满足您和您的客户所需求的应用程序(我们领先的甘特图控件VARCHART XGantt可用于.NET,ActiveX和ASP.NET应用程序。)。VARCHART XGantt可以快速、简单地集成到您的应用程序中,帮助您识别性能瓶颈、避免延迟以及高效利用资源,使复杂数据变得更加容易理解。
甘特图以时间轴可视化任务,资源或能力,从而为规划者提供最佳概览。在设计时,应牢记直接显示对规划者至关重要的信息,以便他能够快速识别规划冲突并进行干预。显示太多信息可能会危及清晰度。这就是为什么工具提示(tooltip)是仅在需要时显示重要数据的好方法。甘特图的真实情况也适用于工具提示:必须快速感知信息,这意味着必须以明确排序和排列的方式呈现信息。本分步指南向我们的甘特图组件VARCHART XGantt用户展示了如何设计清晰排列的工具提示。
VARCHART XGantt中包含的工具提示的设计选项受到限制:
这就是工具提示看起来像你绕过有限的设计选项,只需很少的编程工作:
首先,在VARCHART XGantt中停用VcToolTipTextSupplying事件:
然后在Visual Studio解决方案中创建一个新的表单TooltipWindow。在含有XGantt形式的构造中,TooltipWindow得到由调用配置SetTooltipWindowAttributes方法。此方法如下所示:
TooltipWindow _ttw; private void SetTooltipWindowAttributes() { _ttw = new TooltipWindow(vcGantt1); //Settings for the Tooltip window: _ttw.StartPosition = FormStartPosition.Manual; _ttw.AutoScaleMode = AutoScaleMode.Font; _ttw.AutoSize = true; _ttw.AutoSizeMode = AutoSizeMode.GrowAndShrink; _ttw.ControlBox = false; _ttw.FormBorderStyle = FormBorderStyle.None; _ttw.MaximizeBox = false; _ttw.MinimizeBox = false; _ttw.ShowIcon = false; _ttw.ShowInTaskbar = false; _ttw.TopMost = true; }
现在在TooltipWindow上放置一个DataGridView 并将其命名为TTDataGrid。在DataGridView 的“ 编辑列”对话框中创建三列:
在TooltipWindow的构造函数中,调用SetDataGridAttributes方法并通过此方法配置TTDataGrid。该方法如下所示:
private void SetDataGridAttributes() { //General settings for the data grid: TTDataGrid.AllowUserToAddRows = false; TTDataGrid.AllowUserToDeleteRows = false; TTDataGrid.AllowUserToResizeColumns = false; TTDataGrid.AllowUserToResizeRows = false; TTDataGrid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; TTDataGrid.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable; TTDataGrid.ColumnHeadersVisible = false; TTDataGrid.ReadOnly = true; TTDataGrid.RowHeadersVisible = false; TTDataGrid.ScrollBars = ScrollBars.None; TTDataGrid.ShowCellToolTips = false; TTDataGrid.RowTemplate.DefaultCellStyle.BackColor = Color.FromArgb(255, 240, 240, 240); TTDataGrid.RowTemplate.DefaultCellStyle.ForeColor = Color.Black; TTDataGrid.RowTemplate.DefaultCellStyle.SelectionBackColor = Color.FromArgb(255, 240, 240, 240); TTDataGrid.RowTemplate.DefaultCellStyle.SelectionForeColor = Color.Black; //Column 0: DataGridViewImageColumn dgvic = (DataGridViewImageColumn)TTDataGrid.Columns[0]; dgvic.ImageLayout = DataGridViewImageCellLayout.Zoom; dgvic.ReadOnly = true; dgvic.Resizable = DataGridViewTriState.True; dgvic.DefaultCellStyle.NullValue = null; dgvic.DefaultCellStyle.SelectionBackColor = Color.FromArgb(255, 240, 240, 240); dgvic.DefaultCellStyle.SelectionForeColor = Color.Black; //Column 1: DataGridViewColumn dgvc = TTDataGrid.Columns[1]; dgvc.ReadOnly = true; dgvc.Resizable = DataGridViewTriState.True; dgvc.SortMode = DataGridViewColumnSortMode.NotSortable; //Column 2: dgvc = TTDataGrid.Columns[2]; dgvc.ReadOnly = true; dgvc.Resizable = DataGridViewTriState.True; dgvc.SortMode = DataGridViewColumnSortMode.NotSortable; }
将鼠标移到VARCHART XGantt上会不断触发VcGantt_MouseMove事件。在这种情况下,首先要通过VcGantt.IdentifyObjectAt方法识别鼠标光标当前悬停的对象类型。
如果鼠标光标悬停在节点上(对象类型为vcObjTypeNodeInDiagram),则会启动一个计时器,使TooltipWindow可见。如果鼠标光标远离节点,则TooltipWindow将再次切换为不可见。
这需要通过以下代码行实现:
bool _isVisible = false; private void TooltipWindow_VisibleChanged(object sender, EventArgs e) { VcNode node = _gantt.GetNodeByID(_nodeID); _isVisible = !_isVisible; if (_isVisible) { FillDataGrid(node); ResizeDataGrid(); } else TTDataGrid.Rows.Clear(); } private void FillDataGrid(VcNode node) { object[] rowValues = new object[TTDataGrid.Columns.Count]; //Fill data grid for (short i = 0; i < _dtfc.Count; i++) { rowValues[1] = _dtfc.DataTableFieldByIndex(i).Name + ":"; rowValues[2] = node.get_DataField(i).ToString(); TTDataGrid.Rows.Add(rowValues); } //Set attributes for cell(s) which match certain criteria DataGridViewCellStyle redCellStyle = new DataGridViewCellStyle(); redCellStyle.ForeColor = Color.Red; redCellStyle.SelectionForeColor = Color.Red; redCellStyle.Font = new Font("Microsoft Sans Serif", 8, FontStyle.Bold); if (Convert.ToInt32(node.get_DataField(4)) >= 10) // 4: Duration { TTDataGrid[0, 4].Value = Enhanced_Tooltip.Properties.Resources.Warning; TTDataGrid[2, 4].Style = redCellStyle; } } private void ResizeDataGrid() { int dataGridWidth = 0; int dataGridHeight = 0; //Resize width of data grid for (int i = 0; i < TTDataGrid.Columns.Count; i++) dataGridWidth += TTDataGrid.Columns[i].Width; TTDataGrid.Width = dataGridWidth; //Resize height of data grid for (int i = 0; i < TTDataGrid.Rows.Count; i++) dataGridHeight += TTDataGrid.Rows[i].Height; TTDataGrid.Height = dataGridHeight; }
在FillDataGrid方法中,VARCHART XGantt的数据定义的所有数据字段都示例性地加载到DataGrid中。此外,所有操作持续时间大于或等于10,都显示为红色,并在DataGrid的第一列中用黄色感叹号表示。当然,所有这些都可以根据需要进行定制。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢