Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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# Don';我不知道如何在代码隐藏中使用自定义控件_C#_Asp.net - Fatal编程技术网

C# Don';我不知道如何在代码隐藏中使用自定义控件

C# Don';我不知道如何在代码隐藏中使用自定义控件,c#,asp.net,C#,Asp.net,我用一个文本框做了一个简单的控件 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="sTextBox.ascx.cs" Inherits="TestingASPNET.Controls.sTextBox" className="sTextBox"%> <asp:Textbox runat="server" ID="tbNothing"/> <br /> 这将在我的

我用一个文本框做了一个简单的控件

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="sTextBox.ascx.cs" Inherits="TestingASPNET.Controls.sTextBox" className="sTextBox"%>
    <asp:Textbox runat="server" ID="tbNothing"/>
    <br />
这将在我的页面上添加2个sTextBox

我遇到的问题是如何像使用普通文本框一样使用控件。比如说

   TextBox tb = new TextBox();
   tb.Text = "textbox";
   PlaceHolder1.Controls.Add(tb);
这会在页面上添加一个文本框,其中包含文本“textbox”


有人能给我一种方法来做到这一点吗,但是使用控件sTextBox。

您可以通过向自定义控件添加属性来实现这种行为

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var ctrl = (sTextBox) Page.LoadControl("~/sTextBox.ascx");
        ctrl.Text = "something";
        placeHolder1.Controls.Add(ctrl);
    }
}
用户控制:-

public partial class sTextBox : System.Web.UI.UserControl
{
    public string Text { get; set; }
}

我无法让你的代码工作

我要么不得不

var ctrl = (ProjectName.Controls.sTextBox) Page.LoadControl("~/Controls/sTextBox.ascx");
或导入控件

 using ProjectName.Controls;
当我这么做的时候,它成功了

另外,您的get set属性也不起作用,我必须将其更改为

 public string Text { 
        get
        {
            return tbNothing.Text;
        }
        set
        {
            tbNothing.Text = value;
        }
    }
之后,我又在控件中添加了1个文本框,总共2个。我将ID更改为tb1Text和tb2Text。然后,我必须为我的get集获取2个方法,这是

   public string tb1Text { 
        get
        {
            return tb1.Text;
        }
        set
        {
            tb1.Text = value;
        }
    }

    public string tb2Text
    {
        get
        {
            return tb2.Text;
        }
        set
        {
            tb2.Text = value;
        }
    }
在我的默认代码中,我必须使用

        sTextBox ctrl = (sTextBox)Page.LoadControl("~/Controls/sTextBox.ascx");
        ctrl.tb1Text = "something";
        ctrl.tb2Text = "something 2";
        PlaceHolder1.Controls.Add(ctrl);

这很有效,现在我知道如何在1个控件上使用2个文本框:)。希望我必须做的其他控件也一样:s

检查此项我尝试了此项问题我在“sTextBox”下找到了它有一个错误,它说“找不到类型或命名空间”。这一定是主要错误。我甚至不能在代码中创建一个sTextBox对象,更不用说类型转换了。太棒了!!。我提供的快速示例代码具有与控件相同的名称空间&默认页面。(你的情况并非如此)。此外,C#3.0中引入了自动属性(不确定您使用的是哪个版本),但如果您使用的是C#3.0及更高版本,则可以使用get;设置快乐编程:)谢谢。另外,您是否确定可以使用get;设置我使用的是Framework4.0。我做错了什么吗?当你使用自动属性时,你犯了什么错误。此外,我建议检查此项以了解我没有收到错误的概述。我只是没有在文本框中找到“某物”这个词,直到我把它改成上面的代码。此外,如果该控件中有2个文本框,则auto属性如何知道要获取或设置的文本。
   public string tb1Text { 
        get
        {
            return tb1.Text;
        }
        set
        {
            tb1.Text = value;
        }
    }

    public string tb2Text
    {
        get
        {
            return tb2.Text;
        }
        set
        {
            tb2.Text = value;
        }
    }
        sTextBox ctrl = (sTextBox)Page.LoadControl("~/Controls/sTextBox.ascx");
        ctrl.tb1Text = "something";
        ctrl.tb2Text = "something 2";
        PlaceHolder1.Controls.Add(ctrl);