vs2010怎么新建一个用户自定义控件,最后能够导出用户自定义控件的dll文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2010怎么新建一个用户自定义控件,最后能够导出用户自定义控件的dll文件相关的知识,希望对你有一定的参考价值。

我当前是新建一个Win..窗体的项目,然后右键 -> 添加 ->用户控件,编写用户控件代码....,最后点击生成 上面的基本都点过了,但是在Debug里面总是找不到这个用户自定义控件的dll,究竟是怎么才能导出dll文件,求解

参考技术A 项目-右键-属性,看里面的“生成”,下面的输出路径,默认是bin\Debug\,但有可能被改过了。

用户控制 - 自定义属性

【中文标题】用户控制 - 自定义属性【英文标题】:User Control - Custom Properties 【发布时间】:2010-01-17 17:44:49 【问题描述】:

我在 Visual Studio (WinForms C#) 中开发了一个用户控件并有一个问题。

我需要我的用户控件的用户能够更改某些字符串值,我希望他们能够将用户控件添加到他们的表单并单击它以调出我的用户控件自定义的属性窗格将显示属性。

如何为我的用户控件拥有自己的自定义属性?例如:

我的用户控件包含一个文本框,我希望用户能够在设计时通过属性中名为“文本”或“值”的属性更改该文本框的值。

【问题讨论】:

在此处查看文章 -- Creating Custom Controls in C# 您的控件将如何包含 TextBox 控件?使用类继承还是仅使用容器?你能给出一些代码作为自定义用户控件类定义吗? 【参考方案1】:

您可以通过属性上的属性来执行此操作,如下所示:

[Description("Test text displayed in the textbox"),Category("Data")] 
public string Text 
  get => myInnerTextBox.Text;
  set => myInnerTextBox.Text = value;

类别是属性将出现在 Visual Studio 属性框中的标题。 Here's a more complete MSDN reference,包括类别列表。

【讨论】:

每次我想用这段代码生成项目时,我的 VS2010 都会崩溃,无论我是否包含 System.ComponentModel :& 这适用于大多数自定义属性,但特别适用于覆盖 Text 属性(或任何其他需要覆盖的属性,我假设)汉斯的回答如下是可行的 如何设置这个属性的默认值?【参考方案2】:

很简单,添加一个属性即可:

public string Value 
  get  return textBox1.Text; 
  set  textBox1.Text = value; 

使用Text属性有点棘手,UserControl类intentionally hides吧。您需要覆盖属性以使其恢复正常工作:

[Browsable(true), EditorBrowsable(EditorBrowsableState.Always), Bindable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override string Text 
  get  return textBox1.Text; 
  set  textBox1.Text = value; 

【讨论】:

非常感谢!完全忘记了这个,它让我想回忆起来。 这应该是实际接受的答案。 Text 以特殊方式处理 我也不太明白为什么它会得到这么多票。编译器会为它生成一个警告,大概大多数访问者都想在它前面加上new。这通常是一个非常糟糕的主意,但对于 UC 来说确实是偶然的。 @HansPassant 我面临的唯一问题是,如果我使用与您相同的代码(对于 Text 属性)并在我的父控件的属性窗格中更改它,它不会'不要将代码添加到Form.Designer.cs,因此没有效果。设计器视图更新,但当我启动应用程序时,更改不存在 哦,实际上经过更多谷歌搜索后,我找到了解决方案:codeproject.com/Tips/403782/…。特别是为了覆盖 Text 属性,您还应该具有属性 DesignerSerializationVisibility(DesignerSerializationVisibility.Visible) 以便从设计器中保存更改【参考方案3】:

只需将公共属性添加到用户控件。

您可以添加[Category("MyCategory")][Description("A property that controls the wossname")] 属性使其更美观,但只要它是public 属性,它就应该显示在属性面板中。

【讨论】:

以上是关于vs2010怎么新建一个用户自定义控件,最后能够导出用户自定义控件的dll文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用DevExpress开发用户控件

c# 用户自定义控件的问题 winform

vs2008 自定义控件无法生成dll文件 c#

vs中怎么样使用自定义控件

vs2008时间控件设置默认值

VS2010中如何实现自定义MFC控件