How to reproduce:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
RadDiagramShape shape1 = new RadDiagramShape()
{
Text = "Second Level Domain",
ElementShape = new RoundRectShape(4),
BackColor = Color.LimeGreen
};
shape1.Position = new Telerik.Windows.Diagrams.Core.Point(100, 100);
radDiagram1.Items.Add(shape1);
var res = radDiagram1.Items[0];
((Telerik.WinControls.UI.Diagrams.RadDiagramItem)shape1).EndEdit += item_EndEdit;
RadDiagramShape shape2 = new RadDiagramShape()
{
Text = "Top Level Domain",
ElementShape = new RoundRectShape(50),
BackColor = Color.Cyan
};
shape2.Position = new Telerik.Windows.Diagrams.Core.Point(1600, 100);
radDiagram1.Items.Add(shape2);
RadDiagramShape shape3 = new RadDiagramShape()
{
Text = "Organization Domain",
ElementShape = new RoundRectShape(20),
BackColor = Color.Yellow
};
shape3.Position = new Telerik.Windows.Diagrams.Core.Point(2400, 100);
radDiagram1.Items.Add(shape3);
RadDiagramConnection connection1 = new RadDiagramConnection() { Name = "connection1" };
connection1.Source = shape1;
connection1.Target = shape2;
radDiagram1.Items.Add(connection1);
RadDiagramConnection connection2 = new RadDiagramConnection()
{
Name = "connection2"
};
connection2.Source = shape2;
connection2.Target = shape3;
radDiagram1.Items.Add(connection2);
}
private void item_EndEdit(object sender, Telerik.WinControls.UI.Diagrams.RadRoutedEditEventArgs e)
{
RadDiagramShape shape = ((RadDiagramShape)sender);
string txt = shape.Text;
Size size = TextRenderer.MeasureText(txt, shape.Font, new System.Drawing.Size( (int)shape.Width, int.MaxValue ), ~TextFormatFlags.SingleLine);
shape.Height = size.Height;
}
private void radButton1_Click(object sender, EventArgs e)
{
this.radDiagram1.DiagramElement.BringIntoView(radDiagram1.Items[0], this.radDiagram1.Zoom, false);
}
private void radButton2_Click(object sender, EventArgs e)
{
this.radDiagram1.DiagramElement.BringIntoView(radDiagram1.Items[1], this.radDiagram1.Zoom, false);
}
private void radButton3_Click(object sender, EventArgs e)
{
this.radDiagram1.DiagramElement.BringIntoView(radDiagram1.Items[2], this.radDiagram1.Zoom, false);
}
}
Workaround: manually update the view
private void radButton1_Click(object sender, EventArgs e)
{
this.radDiagram1.DiagramElement.BringIntoView(radDiagram1.Items[0], this.radDiagram1.Zoom, false);
this.radDiagram1.DiagramElement.Controller.OnViewportChanged();
}
private void radButton2_Click(object sender, EventArgs e)
{
this.radDiagram1.DiagramElement.BringIntoView(radDiagram1.Items[1], this.radDiagram1.Zoom, false);
this.radDiagram1.DiagramElement.Controller.OnViewportChanged();
}
private void radButton3_Click(object sender, EventArgs e)
{
this.radDiagram1.DiagramElement.BringIntoView(radDiagram1.Items[2], this.radDiagram1.Zoom, false);
this.radDiagram1.DiagramElement.Controller.OnViewportChanged();
}