我用1个文本框进行了简单的控制。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="sTextBox.ascx.cs" Inherits="TestingASPNET.Controls.sTextBox" className="sTextBox"%>
<asp:Textbox runat="server" ID="tbNothing"/>
<br />
我将此控件称为default.aspx中的引用。这是简单的代码。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="TestingASPNET._default" %>
<%@ Reference Control="~/Controls/sTextBox.ascx"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:PlaceHolder runat="server" id="PlaceHolder1" />
</div>
</form>
</body>
</html>
在default.aspx.cs我的代码中,我有。
protected void Page_Load(object sender, EventArgs e)
{
PlaceHolder1.Controls.Add(LoadControl("~/Controls/sTextBox.ascx"));
PlaceHolder1.Controls.Add(LoadControl("~/Controls/sTextBox.ascx"));
}
这会将2个sTextBox添加到我的页面上。
我遇到的问题是如何像普通的textBox一样使用控件。例如。
TextBox tb = new TextBox();
tb.Text = "textbox";
PlaceHolder1.Controls.Add(tb);
这会在页面上添加一个文本框,其中包含文本“textbox”。
有人可以给我一个完全正确的方法,但是使用控件sTextBox。
答案 0 :(得分:0)
您可以通过向自定义控件添加属性来获取该行为。
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; }
}
答案 1 :(得分:0)
我无法让你的代码发挥作用。
我要么
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;
}
}
之后我又在控件总计2中添加了1个文本框。我将ID更改为tb1Text和tb2Text。然后,我必须为我的get set获得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