自定义控件的自定义属性编写

hit040420224 2008-08-20 08:09:32
编写了一个含textBox的自定义控件,定义了一个PJCT_Name的属性用来取出textBox的值,并用于外界的访问
代码如下:
private string project_name;

/// <summary>
/// 添加属性PJCT_Name
/// </summary>
public string PJCT_Name
{
get { return project_name; }
set { project_name = value;
value = PJCT_NAME.Text; }
}
在此自定义控件的按钮事件中调试查看PJCT_Name的值为空
private void search_Click(object sender, EventArgs e)
{
string aa = this.PJCT_Name;
MessageBox.Show(aa);
}
感觉自定义属性的set{}有问题,但不知如何改,
请高手帮忙
...全文
39 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huoxudong125 2008-08-20
  • 打赏
  • 举报
回复
set { project_name = value;
value = PJCT_NAME.Text; }
这样也行?
  • 打赏
  • 举报
回复
一种写法是:

public string PJCT_Name
{
get {EnsureChildControls(); return PJCT_NAME.Text; }
set {EnsureChildControls();PJCT_NAME.Text=value; }
}

另外一种是保留project_name变量,但是在set中并不设置给PJCT_NAME.Text,而是在控件的PreRender过程中才将
PJCT_NAME.Text=project_name;
这种方法中无需执行EnsureChildControls()。
_空指针_ 2008-08-20
  • 打赏
  • 举报
回复
你并未对 this.PJCT_Name 属性赋值,你可以设置一个默认值
youzelin 2008-08-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 hit040420224 的帖子:]
private void search_Click(object sender, EventArgs e)
{
string aa = this.PJCT_Name;
MessageBox.Show(aa);
}
[/Quote]

在此之前,你并未对 this.PJCT_Name 属性赋值,直接取值当然为空

另外,在属性中对 value 赋值是没有意义的

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧