我正在尝试使用vb.net自定义线性超图的X轴系列标签。
我查看documentation from Infragistics并发现我可以使用此代码:
UltraChart.Axis.Y.Labels.SeriesLabels.FormatString = "<Item_Label>"
可以看到有关可用标签类型的说明here。 但是,我没有得到我预期的结果。我得到“第一排”,我想只获得“1”。
我已尝试在Infragistics论坛的this post的第一个回复中使用的方法,该方法包括使用带有自定义标签的哈希表。这里使用的代码如下(在C#中):
Hashtable labelHash = new Hashtable();
labelHash.Add("CUSTOM", new MyLabelRenderer());
ultraChart1.LabelHash = labelHash;
xAxis.Labels.ItemFormatString = "<CUSTOM>";
public class MyLabelRenderer : IRenderLabel
{
public string ToString(Hashtable context)
{
string label = (string)context["ITEM_LABEL"];
int row = (int)context["DATA_ROW"];
int col = (int)context["DATA_COLUMN"];
//use row, col, current label's text or other info inside the context to get the axis label.
//the string returned here will replace the current label.
return label;
}
}
这种方法也不起作用。 我使用的是Infragistics NetAdvantage 2011.1。
任何人都知道如何自定义这些标签以获取“Row#”之后的数字?
答案 0 :(得分:0)
有不同的方法可以解决这个问题。一种可能的解决方案是,如果您正在使用FillSceneGraph事件。通过这种方式,您可以获取TEXT基元并进行修改。例如:
private void ultraChart1_FillSceneGraph(object sender, Infragistics.UltraChart.Shared.Events.FillSceneGraphEventArgs e)
{
foreach (Primitive pr in e.SceneGraph)
{
if (pr is Text &&((Text)pr).labelStyle.Orientation == TextOrientation.VerticalLeftFacing )
{
pr.PE.Fill = Color.Red;
((Text)pr).SetTextString("My custom labels");
}
}
}
答案 1 :(得分:0)
行。我将尝试更深入地解释FormatString属性。 使用此属性时,可以确定要显示的信息(例如:项值或数据值或系列值)。当然可以选择使用自定义的FormatString。 例如:
axisX2.Labels.ItemFormat = AxisItemLabelFormat.Custom; axisX2.Labels.ItemFormatString =“”;
在这种情况下,我们有在X轴上表示日期的标签,因此如果您使用这两个属性,则可以确定日期格式(例如dd / MM / yyyy或MM / ddd / yy)。在您的方案中,您的X轴上有字符串值。如果您无法在较低级别修改这些字符串值(例如,在数据库中,通过TableAdapters SQL查询,DataSet,即在将DataSource设置为UltraChart之前),则可以使用FillSceneGraph事件并修改Text基元。有关此活动的更多详细信息,请访问http://help.infragistics.com/Help/NetAdvantage/WinForms/2013.1/CLR4.0/html/Chart_Modify_Scene_Graph_Using_FillSceneGraph_Event.html如果您需要样本或其他帮助,请随时在我们的网站上创建新的论坛帖子 - http://www.infragistics.com/community/forums/
我很乐意帮助你。