2013-04-09 4 views
1

У меня следующая проблема с конкретным контролем пользователя:.Элементы управления не отображаются в режиме разработки (время разработки)?

Он появляется белый и никакого контроля не появляются вообще в (design view) (design time)

но источник:

<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="Follow_New.ascx.cs" 
    Inherits="DFUI.UserControls.Follow_New" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 
<%@ Register Assembly="MattBerseth.WebControls" Namespace="MattBerseth.WebControls" 
    TagPrefix="mb" %> 
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
. 
. 
. 
. 
. 

В чем проблема, как показать все элементы управления для редактирования в дизайне, а не с видом источника?

+1

Можете ли вы показать, где вы на самом деле ** ДОБАВЛЯЕТ ** контроль? Все, что вы показываете, это ** РЕГИСТРАЦИЯ ** их. Это ничего не даст? – Belogix

+0

в 'update panel' –

+0

Где ваша панель обновления, которую вы упоминаете? Исходя из кода, который вы вставили здесь, он действительно должен выглядеть белым в режиме разработки, поскольку в вашем UserControl нет видимых элементов пользовательского интерфейса. – Netricity

ответ

1

Один из способов убедиться, что управление может быть «видимым» в режиме конструктора вы можете переопределить визуализации, как это:

protected override void Render(System.Web.UI.HtmlTextWriter writer) 
    { 
     if (this.DesignMode) 
     { 
      //render control for designer... 
      writer.Write(string.Format("<div>{0}</div>", this.ID)); 
     } 
     else 
     { 
      //render actual control in runtime... 
      base.Render(writer); 
     } 
    } 

Чтобы включить контроль редактирования внутри конструктора, вы должны унаследовать от INamingContainer, здесь просто демо:

[ToolboxData("<{0}:TabContainer runat=server></{0}:TabContainer>")] 
[ParseChildren(ChildrenAsProperties = false)] 
[PersistChildren(true)] 
public class TabContainer : Panel, INamingContainer 
{ 

    List<TabItem> tabs = new List<TabItem>(); 

    [Browsable(true)] 
    [PersistenceMode(PersistenceMode.InnerProperty)] 
    public List<TabItem> Tabs 
    { 
     get { return this.tabs; } 
    } 
} 

public class TabItem : Panel, IPostBackEventHandler 
{ 

    public event EventHandler Click; 

} 

Так дизайн вид будет выглядеть примерно так:

 <cc1:TabContainer ID="TabContainer1" runat="server"> 
      <Tabs> 
       <cc1:TabItem ID="TabFirst" /> 
       <cc1:TabItem ID="TabSecond" /> 
      </Tabs> 
     </cc1:TabContainer> 

Надеюсь, это поможет!

1

Вы проверили, включен ли дизайн? Гото Функции> Показать все параметры> Прокрутить HTML дизайнер> Выберите Включить HTML-конструктор (Потребует, чтобы перезагрузить VS)

Другой причиной может быть разорван HTML, открыть ASCX (не код позади) и просто нажать CTRL + K затем CTRL + D.

1

Если вы хотите, чтобы элементы управления отображались на панели инструментов, вам может потребоваться вручную добавить DLL-файлы, которые вы ссылаетесь на панель инструментов. Щелкните правой кнопкой мыши в панели инструментов, затем перейдите к расположению библиотек, на которые вы ссылаетесь, и выберите нужные вам. Это приведет к тому, что любые элементы управления, которые должным образом отмечены (помечены так, как описано в @ gregor-primar), отображаются в панели инструментов.

Смежные вопросы