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