To reproduce: - Zoom the diagram and drop an item from the toolbox. Workaround: Friend Class MyToolbox Inherits RadDiagramToolbox Protected Overrides Sub DragDropService_PreviewDragDrop(ByVal sender As Object, ByVal e As RadDropEventArgs) 'base.DragDropService_PreviewDragDrop(sender, e); Dim shape = TryCast(GetType(RadDiagramToolbox).GetField("shape", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance).GetValue(Me), RadDiagramShape) Dim diagramElement As RadDiagramElement = TryCast(e.HitTarget, RadDiagramElement) Dim containerShape As RadDiagramContainerShape = TryCast(e.HitTarget, RadDiagramContainerShape) If containerShape IsNot Nothing Then diagramElement = containerShape.FindAncestor(Of RadDiagramElement)() End If If diagramElement Is Nothing OrElse diagramElement.Shape IsNot Nothing OrElse shape Is Nothing Then Return End If e.Handled = True Dim zoom As Double = diagramElement.Zoom Dim m As Telerik.WinControls.Layouts.RadMatrix = diagramElement.MainPanel.Transform m.Invert() Dim position = New Telerik.Windows.Diagrams.Core.Point(m.DX + (e.DropLocation.X - shape.Width \ 2) * 1 / zoom, m.DY + (e.DropLocation.Y - shape.Height \ 2) * 1 / zoom) If containerShape IsNot Nothing Then position.X += containerShape.Position.X position.Y += containerShape.Position.Y End If shape.Position = position diagramElement.AddShape(shape, Nothing, True) If containerShape IsNot Nothing Then DirectCast(containerShape, IContainerShape).AddItem(shape) End If shape = Nothing End Sub End Class
To reproduce: - Add some shapes and call the BringToView method Private Sub RadButton4_Click(sender As Object, e As EventArgs) Handles RadButton4.Click Dim ds As RadDiagramShape For i As Integer = 0 To Me.RadDiagram1.Shapes.Count - 1 If i = 2 Then ds = DirectCast(RadDiagram1.Shapes(i), RadDiagramShape) Me.RadDiagram1.DiagramElement.BringIntoView(ds, 1.0, True) Exit For End If Next End Sub Workaround: Me.RadDiagram1.DiagramElement.BringIntoView(ds, 1.0, False)
Please refer to the attached gif file illustrating how to reproduce the problem. Workaround: use the following approach for exporting to an image: private void radButton1_Click(object sender, EventArgs e) { RadScrollBarElement horizontalScrollBar = this.radDiagram1.DiagramElement.Children[1] as RadScrollBarElement; RadScrollBarElement verticalScrollBar = this.radDiagram1.DiagramElement.Children[2] as RadScrollBarElement; this.Size = new System.Drawing.Size(this.Size.Width + (horizontalScrollBar.Maximum - this.radDiagram1.Size.Width), this.Size.Height + (verticalScrollBar.Maximum + 1 - this.radDiagram1.Height)); Application.DoEvents(); Bitmap bmp = new Bitmap(radDiagram1.Width, radDiagram1.Height, PixelFormat.Format32bppArgb); this.radDiagram1.DrawToBitmap(bmp, new Rectangle(0, 0, radDiagram1.Width, radDiagram1.Height)); bmp.Save(@"..\..\test2.bmp"); System.Diagnostics.Process.Start(@"..\..\test2.bmp"); }
To reproduce: public Form1() { InitializeComponent(); this.radDiagram1.SelectionMode = Telerik.Windows.Diagrams.Core.SelectionMode.None; PopulateWithData(); } private void PopulateWithData() { DataTable tasksTable = new DataTable("Tasks"); tasksTable.Columns.Add("Id"); tasksTable.Columns.Add("Text"); tasksTable.Columns.Add("Type"); tasksTable.Columns.Add("X"); tasksTable.Columns.Add("Y"); tasksTable.Columns.Add("Width"); tasksTable.Columns.Add("Height"); tasksTable.Rows.Add("Task1", "Task 1", "circle", 100, 300, 50, 50); tasksTable.Rows.Add("Task2", "Task 2", "rectangle", 200, 100, 100, 100); tasksTable.Rows.Add("Task3", "Task 3", "circle", 300, 300, 50, 50); tasksTable.Rows.Add("Task4", "Task 4", "rectangle", 400, 100, 100, 100); tasksTable.Rows.Add("Task5", "Task 5", "circle", 500, 300, 50, 50); DataTable relationsTable = new DataTable("Relations"); relationsTable.Columns.Add("SourceTaskId"); relationsTable.Columns.Add("SourceConnector"); relationsTable.Columns.Add("TargetTaskId"); relationsTable.Columns.Add("TargetConnector"); relationsTable.Columns.Add("StartCapField"); relationsTable.Columns.Add("EndCapField"); relationsTable.Rows.Add("Task2", "Left", "Task1", "Auto", "Arrow5Filled", "Arrow1"); relationsTable.Rows.Add("Task2", "Auto", "Task3", "Auto", "Arrow4Filled", "Arrow1Filled"); relationsTable.Rows.Add("Task4", "Auto", "Task5", "Auto", "Arrow2Filled", "Arrow2"); DataSet ds = new DataSet(); ds.Tables.Add(tasksTable); ds.Tables.Add(relationsTable); this.radDiagram1.DataSource = ds; this.radDiagram1.ConnectionDataMember = "Relations"; this.radDiagram1.ShapeDataMember = "Tasks"; this.radDiagram1.ShapeIdMember = "Id"; this.radDiagram1.ShapeTextMember = "Text"; this.radDiagram1.ShapeTypeMember = "Type"; this.radDiagram1.ShapeXMember = "X"; this.radDiagram1.ShapeYMember = "Y"; this.radDiagram1.ShapeWidthMember = "Width"; this.radDiagram1.ShapeHeightMember = "Height"; this.radDiagram1.ConnectionSourceShapeIdMember = "SourceTaskId"; this.radDiagram1.ConnectionTargetShapeIdMember = "TargetTaskId"; this.radDiagram1.ConnectionSourceCapTypeMember = "StartCapField"; this.radDiagram1.ConnectionTargetCapTypeMember = "EndCapField"; this.radDiagram1.ConnectionSourceConnectorMember = "SourceConnector"; this.radDiagram1.ConnectionTargetConnectorMember = "TargetConnector"; } Workaround: after rebinding, clear the selection and set the SelectionMode to None: PopulateWithData(); this.radDiagram1.SelectedItem = null; this.radDiagram1.SelectionMode = Telerik.Windows.Diagrams.Core.SelectionMode.None;
To reproduce: - Add shape to the diagram. - Select the shape. - Press and hold Ctrl, then press one of the arrow keys. - The shape is not moved. Workaround: private void RadDiagram1_KeyDown(object sender, KeyEventArgs e) { // Ctrl should be pressed as well. if (e.KeyCode == Keys.Left) { var shape = radDiagram1.SelectedItem as RadDiagramShape; if (shape != null) { shape.Position = new Telerik.Windows.Diagrams.Core.Point(shape.Position.X - 10, shape.Position.Y); } } }
To reproduce: public Form1() { InitializeComponent(); RadDiagramShape shape = new RadDiagramShape(); shape.Text = "Shape1"; shape.AllowCopy = false; shape.AllowPaste = false; shape.AllowDelete = false; shape.AllowCut = false; shape.Position = new Telerik.Windows.Diagrams.Core.Point(50, 50); shape.BackColor = Color.Red; this.radDiagram1.AddShape(shape); } Workaround: Hide the first tab in the SettinsgPane as it is demonstrated in the following article: http://www.telerik.com/help/winforms/diagram-settings-pane.html
Please refer to the attached gif file. Workaround: cancel the PreviewPan event and adjust manually the Telerik.WinControls.UI.Diagrams.Panel.PositionOffset. Here is demonstrated a sample approach: int widthOffset = -1000; int heightOffset = -1000; private void radDiagram_PreviewPan(object sender, Telerik.WinControls.UI.Diagrams.PositionChangedRoutedEventArgs e) { Telerik.WinControls.UI.Diagrams.Panel panel = this.radDiagram.DiagramElement.Children.First() as Telerik.WinControls.UI.Diagrams.Panel; Telerik.WinControls.UI.Diagrams.Panel hitTestablePanel = panel.Children.First() as Telerik.WinControls.UI.Diagrams.Panel; e.Cancel = true; if (panel != null) { hitTestablePanel.PositionOffset = new SizeF(widthOffset,heightOffset); widthOffset += 50; } }
To reproduce: radDiagram1.SelectedItem = radDiagram1.Shapes[2]; Workaround: radDiagram1.Shapes[2].IsSelected = true;
Note: this behavior may be applied to all other relevant manipulation properties To reproduce: this.radDiagram1.IsDraggingEnabled = true; RadDiagramShape shape1 = new RadDiagramShape(); shape1.Text = "Shape1"; shape1.BackColor = Color.Red; shape1.IsDraggingEnabled = false; shape1.ElementShape = new RoundRectShape(5); this.radDiagram1.Items.Add(shape1); As a result you will be able to drag the shape which is not correct. Workaround: set the RadDiagramShape.IsDraggingEnabled after the shape is added to the diagram: this.radDiagram1.IsDraggingEnabled = true; RadDiagramShape shape1 = new RadDiagramShape(); shape1.Text = "Shape1"; shape1.BackColor = Color.Red; shape1.ElementShape = new RoundRectShape(5); this.radDiagram1.Items.Add(shape1); shape1.IsDraggingEnabled = false;
To reproduce: 1. Add RadDiagram with 10 shapes and connection between them 2. Set the Layout to be Tree 3. The vertical scrollbar is not layout to the end of diagram, there is a gap.
Workaround: Private Sub RadDiagram1_MouseDoubleClick(sender As Object, e As MouseEventArgs) If e.Clicks = 2 Then Dim shape As RadDiagramShape = Me.RadDiagram1.DiagramElement.ElementTree.GetElementAtPoint(e.Location).FindAncestor(Of RadDiagramShape)() If shape IsNot Nothing Then 'ToDo End If End If End Sub