Completed
Last Updated: 15 Aug 2019 14:26 by ADMIN
Release R3 2019 (LIB 2019.2.819)

To reproduce:

private void RadButton5_Click(object sender, EventArgs e)
{
    RadButton labelControl = new RadButton();
    labelControl.Size = new Size(200, 30);
    labelControl.Text = "Test";

    layoutControlItem1.AssociatedControl = labelControl;
}

Workaround: 
private void RadButton5_Click(object sender, EventArgs e)
{
    RadButton labelControl = new RadButton();
    labelControl.Size = new Size(200, 30);
    labelControl.Text = "Test";

    ((RadLayoutControlControlCollection)this.radLayoutControl1.Controls).RemoveInternal(layoutControlItem1.AssociatedControl);
    ((RadLayoutControlControlCollection)this.radLayoutControl1.Controls).AddInternal(labelControl);
    layoutControlItem1.AssociatedControl = labelControl;

    layoutControlItem1.UpdateControlBounds();
   
}

 

Completed
Last Updated: 05 Feb 2019 15:48 by ADMIN
Hide Item option in the context menu should not be present for those items. We should also consider a cancellable ItemHiding event. The custom control below handles this scenario:

public class CustomRadLayoutControl : RadLayoutControl
{
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadLayoutControl).FullName;
        }
    }

    protected override void InitializeDropDownMenu()
    {
        FieldInfo hideMenuItemFi = typeof(RadLayoutControl).GetField("hideMenuItem", BindingFlags.Instance | BindingFlags.NonPublic);
        RadMenuItem hideMenuItem = hideMenuItemFi.GetValue(this) as RadMenuItem;

        if (hideMenuItem == null)
        {
            hideMenuItemFi.SetValue(this, new RadMenuItem(LayoutControlLocalizationProvider.CurrentProvider.GetLocalizedString(LayoutControlStringId.ContextMenuCustomize)));
            hideMenuItem = hideMenuItemFi.GetValue(this) as RadMenuItem;
        }

        hideMenuItem.Click += customizeItem_Click;

        RadDropDownMenu menu = typeof(RadLayoutControl).GetField("dropDownMenu", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this) as RadDropDownMenu;
        menu.Items.Add(hideMenuItem);
    }

    private void customizeItem_Click(object sender, EventArgs e)
    {
        if (this.AllowCustomize)
        {
            this.ShowCustomizeMenuDialog();
        }
    }

    private void ShowCustomizeMenuDialog()
    {
        if (this.CustomizeDialog.Visible)
        {
            return;
        }

        this.ShowCustomDragOverlay();
        this.CustomizeDialog.Owner = this.FindForm();
        ThemeResolutionService.ApplyThemeToControlTree(this.CustomizeDialog, this.ThemeName);

        if (this.CustomizeDialog.Location == Point.Empty)
        {
            this.CustomizeDialog.Location = GetInitialCustomizeDialogLocation();
        }

        this.CustomizeDialog.Show();
        this.CustomizeDialog.RightToLeft = this.RightToLeft;
    }

    private void ShowCustomDragOverlay()
    {
        FieldInfo dragOverlayFi = typeof(RadLayoutControl).GetField("dragOverlay", BindingFlags.Instance | BindingFlags.NonPublic);
        LayoutControlDraggableOverlay dragOverlay = dragOverlayFi.GetValue(this) as LayoutControlDraggableOverlay;

        if (dragOverlay == null)
        {
            dragOverlayFi.SetValue(this, new CustomLayoutControlDraggableOverlay(this));
            dragOverlay = dragOverlayFi.GetValue(this) as LayoutControlDraggableOverlay;
        }

        dragOverlay.ThemeName = this.ThemeName;
        dragOverlay.UpdatePreview();

        dragOverlay.Dock = DockStyle.Fill;
        ((RadLayoutControlControlCollection)this.Controls).AddInternal(dragOverlay);
        dragOverlay.Visible = true;
        dragOverlay.BringToFront();
        this.PerformLayout();
        this.Refresh();
    }

}

public class CustomLayoutControlDraggableOverlay : LayoutControlDraggableOverlay
{
    private RadMenuItem hideMenuItem;


    public CustomLayoutControlDraggableOverlay(RadLayoutControl owner) 
        : base(owner)
    {
        RadDropDownMenu contextMenu = typeof(LayoutControlDraggableOverlay).GetField("contextMenu", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this) as RadDropDownMenu;
        contextMenu.Items.Clear();

        this.hideMenuItem = new RadMenuItem(LayoutControlLocalizationProvider.CurrentProvider.GetLocalizedString(LayoutControlStringId.ContextMenuHideItem));
        this.hideMenuItem.Text = LayoutControlLocalizationProvider.CurrentProvider.GetLocalizedString(LayoutControlStringId.ContextMenuHideItem);
        this.hideMenuItem.Click += hideMenuItem_Click;
        contextMenu.Items.Add(hideMenuItem);
        contextMenu.DropDownOpening += ContextMenu_DropDownOpening;
    }

    private void ContextMenu_DropDownOpening(object sender, CancelEventArgs e)
    {
        if (this.SelectedItems.Count == 1 && this.SelectedItems[0].Name == "layoutControlItem4")
        {
            e.Cancel = true;
        }
    }

    private void hideMenuItem_Click(object sender, EventArgs e)
    {
        foreach (DraggableLayoutControlItem item in this.SelectedItems)
        {
            if (item.Name == "layoutControlItem4")
            {
                continue;
            }

            ((CustomRadLayoutControl)this.Owner).HideItem(item.AssociatedItem);
        }

        this.UpdatePreview();
    }
}
Completed
Last Updated: 09 Oct 2018 13:10 by Dimitar
Workaround: handle the RadPropertyChanging and RadPropertyChanged

public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
    public RadForm1()
    {
        InitializeComponent();
        
        this.layoutControlGroupItem1.RadPropertyChanging += LayoutControlGroupItem1_RadPropertyChanging;
        this.layoutControlGroupItem1.RadPropertyChanged += LayoutControlGroupItem1_RadPropertyChanged;
    }

    private void LayoutControlGroupItem1_RadPropertyChanged(object sender, RadPropertyChangedEventArgs e)
    {
        if (e.Property == LayoutControlGroupItem.IsExpandedProperty)
        {
            Console.WriteLine("IsExpanded Changed");
            Console.WriteLine("Old Value: " + e.OldValue);
            Console.WriteLine("New Value: " + e.NewValue);
        }
    }
}
Completed
Last Updated: 12 Jun 2018 12:38 by Dimitar
Workaround: set a White back color to the control in the designer or use the attached custom theme
Completed
Last Updated: 15 Aug 2017 08:46 by ADMIN
To reproduce:
- Add layout control to a standard Form.
- Make the form smaller so a scrollbar appears in the layout control.
- There is an exception when you are scrolling.

Workaround:
Use RadForm instaed.
Completed
Last Updated: 15 Aug 2017 11:03 by ADMIN
To reproduce:
- Start the attached project. 
- Collapse and then expand the group.
- The label should remain hidden.

Workaround:
bool labelVisiable = false;
private void TxtIdNro_VisibleChanged(object sender, EventArgs e)
{
    if (txtIdNro.Visible && !labelVisiable)
    {
        txtIdNro.Visible = false;
    }
}
Completed
Last Updated: 15 Aug 2017 10:54 by ADMIN
Please run the attached sample project and follow the steps in the document locate din the zipped folder.

Workaround:
this.radLayoutControl1.VerticalScrollbar.ValueChanged += VerticalScrollbar_ValueChanged;

private void VerticalScrollbar_ValueChanged(object sender, EventArgs e)
        {
            this.Width += 1;
            this.Width -= 1;
        } 
Completed
Last Updated: 18 May 2017 07:38 by ADMIN
Completed
Last Updated: 28 Dec 2016 09:31 by ADMIN
Workaround: access the tabbed group and remove the group item manually
this.layoutControlTabbedGroup1.ItemGroups.Remove(this.layoutControlGroupItem1);
this.radLayoutControl1.HiddenItems.Add(this.layoutControlGroupItem1);
Completed
Last Updated: 18 Nov 2016 13:34 by ADMIN
The attached video shows how this can be reproduced. 

Workaround: 
private void RadLayoutControl1_MouseWheel(object sender, MouseEventArgs e)
{
    HandledMouseEventArgs ee = (HandledMouseEventArgs)e;
    ee.Handled = true;
}
Completed
Last Updated: 25 Jan 2017 08:34 by ADMIN
To reproduce:
- Open the attached project. 
- Select the second tab and then the inner tabs.
- The layout is not updated.

Workaround:
private void TabStrip_ItemSelected(object sender, RadPageViewItemSelectedEventArgs e)
{
    LayoutControlTabStripElement el = sender as LayoutControlTabStripElement;
    foreach (LayoutControlTabStripItem  item in el.Items)
    {
        var groupItem = item.LayoutGroupItem;
        groupItem.Visibility = Telerik.WinControls.ElementVisibility.Visible;
        groupItem.InvalidateMeasure(true);
        groupItem.InvalidateArrange(true);
        groupItem.UpdateLayout();
        groupItem.Visibility = Telerik.WinControls.ElementVisibility.Collapsed;
    }

    foreach (LayoutControlTabStripItem item in el.Items)
    {
        if (item == e.SelectedItem)
        {
            var groupItem = item.LayoutGroupItem;
            groupItem.Visibility = Telerik.WinControls.ElementVisibility.Visible;
            break;
        }
    }
}

// access event
layoutControlTabbedGroup4.TabStrip.ItemSelected += TabStrip_ItemSelected;
Completed
Last Updated: 11 Sep 2015 11:08 by ADMIN
To reproduce:
- Create a new project and add a blank user control to it.
- Add RadLayoutControl to the user control.
- Add another control to the layout control.

Workaround 
Use a form instead of user control. Then add the controls from the form at runtime. 

Completed
Last Updated: 23 Jul 2015 13:07 by ADMIN
To reproduce:
- Add RadPageView with four pages to a form.
- In the firs page add RadLayoutControl with some items in it.
- Select the second page and try to add controls to it.

Workaround: 
- Place the layout control in a separte user control and then add it to the main form.