Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控件没有';是否在设计模式(设计时间)下显示?_C#_Asp.net_Visual Studio 2008_User Controls - Fatal编程技术网

C# 控件没有';是否在设计模式(设计时间)下显示?

C# 控件没有';是否在设计模式(设计时间)下显示?,c#,asp.net,visual-studio-2008,user-controls,C#,Asp.net,Visual Studio 2008,User Controls,我对特定用户控件有以下问题: 它在(设计视图)中显示为白色,并且根本不显示任何控件。(设计时间) 但消息来源: <%@ Control Language="C#" AutoEventWireup="True" CodeBehind="Follow_New.ascx.cs" Inherits="DFUI.UserControls.Follow_New" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="Aja

我对特定用户控件有以下问题:

它在(
设计视图
)中显示为白色,并且根本不显示任何控件。(
设计时间

但消息来源:

<%@ 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" %>
.
.
.
.
.

.
.
.
.
.


如何在“设计”视图中显示所有要编辑的控件而不受源代码视图的影响,问题是什么?

一种确保控件在“设计”视图中“可见”的方法,可以如下所示覆盖渲染:

    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);
        }
    } 
        <cc1:TabContainer ID="TabContainer1" runat="server">
            <Tabs>
                <cc1:TabItem ID="TabFirst" />
                <cc1:TabItem ID="TabSecond" />
            </Tabs>
        </cc1:TabContainer>
protected override void Render(System.Web.UI.HtmlTextWriter)
{
如果(此.DesignMode)
{
//设计器的渲染控件。。。
Write(string.Format(“{0}”,this.ID));
}
其他的
{
//在运行时呈现实际控件。。。
base.Render(writer);
}
} 
要在设计器中启用控件编辑,您应该从InAdminContainer继承,下面是一个简单的演示:

[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;

}
[ToolboxData(“”)
[解析子对象(childrenaproperties=false)]
[儿童(对)]
公共类选项卡容器:面板,InAdminContainer
{
列表选项卡=新建列表();
[可浏览(正确)]
[PersistenceMode(PersistenceMode.InnerProperty)]
公共列表选项卡
{
获取{返回this.tabs;}
}
}
公共类选项卡项:面板,IPostBackEventHandler
{
公共事件事件处理程序单击;
}
因此,“设计”视图将如下所示:

    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);
        }
    } 
        <cc1:TabContainer ID="TabContainer1" runat="server">
            <Tabs>
                <cc1:TabItem ID="TabFirst" />
                <cc1:TabItem ID="TabSecond" />
            </Tabs>
        </cc1:TabContainer>


希望这有帮助

是否检查了“设计视图”是否已打开?转到选项>显示所有设置>滚动到HTML设计器>选择启用HTML设计器(需要重新启动VS)


另一个原因可能是HTML被破坏,打开ASCX(而不是代码隐藏),然后按CTRL+K,然后按CTRL+D。如果您试图让控件显示在工具箱中,则可能需要手动将引用的DLL添加到工具箱中。在工具箱中单击鼠标右键,然后浏览到要引用的DLL的位置,并选择所需的DLL。这将使任何正确标记的控件(以@gregor primar描述的方式标记)显示在工具箱中

您能否显示实际添加控件的位置?你在这里展示的就是注册它们。这实际上不会渲染任何东西?你提到的更新面板在哪里?离开你粘贴在这里的代码,它在设计模式下确实应该显示为白色,因为你的UserControl中没有可见的UI元素。是的,注册后,我的更新面板中有许多控件。