Tag: 用户控件

C#用户控件作为自定义面板

我创建自己的用户控件,只包含一个面板: 当我在设计器中拖动myPanel对象然后尝试在其上添加按钮时,该按钮实际上被添加到窗体的控件中。 我必须设置一个属性/属性才能执行此操作,另一种方法可以执行我想要的操作吗? public class MyPanel : UserControl { private Panel panelMain; public MyPanel() { InitializeComponent(); } private void InitializeComponent() { this.panelMain = new System.Windows.Forms.Panel(); this.SuspendLayout(); // // panelMain // this.panelMain.BackColor = System.Drawing.SystemColors.ActiveCaption; this.panelMain.Dock = System.Windows.Forms.DockStyle.Fill; this.panelMain.Location = new System.Drawing.Point(0, 0); this.panelMain.Name = “panelMain”; this.panelMain.Size = new System.Drawing.Size(150, 150); this.panelMain.TabIndex = 0; // // myPanel […]

Page_ClientValidate()对象预期错误,无法找到validation器

我有一个表单HomePage.aspx包含一个空的asp:Panel,一个下拉列表,让用户选择一个SPFielType …索引更改,我的HomePage.aspx.cs页面将获得选中的文本,并将在面板中加载用户控件,这个用户控件将根据用户选择的spfieldtype和一个调用validateForm()函数的按钮生成一个控件…我的问题是validateForm()内的Page_ClientValidate()函数找不到validation器,我也尝试过给一个组名,但仍然没有工作。 当我将按钮放入我的aspx页面(不动态渲染)时,它正在validation我的页面。( )。 但是当我动态渲染它时,无法validation表单。这就是我想要做的: protected override void CreateChildControls() { try { fieldRenderingControl = this.CreateFieldRenderingControl(this.FieldType); this.Controls.Add(fieldRenderingControl); Button button = new Button(); button.UseSubmitBehavior = false; button.Text = “ValidateButton”; button.ID = “ValidateButton”; button.OnClientClick = “validateForm()”; this.Controls.Add(button); RequiredFieldValidator newValidator = new RequiredFieldValidator(); newValidator.Text = “***”; newValidator.ID = “valideee”; newValidator.EnableClientScript = true; newValidator.Enabled = true; newValidator.SetFocusOnError = true; newValidator.Display […]

将Null值分配给DataTable中的Integer列

我有一个带有Integer DataType的One ColumnName“CustomerID”的数据表。 动态地我想向DataTable添加行。 为此,我创建了一个DataRow对象,如: DataTable dt = new DataTable(); DataRow DR = dt.NewRow(); DR[“CustomerID”] = Convert.ToInt32(TextBox1.Text); 但是如果TextBox包含空字符串,则会抛出错误。 在这种情况下,我想将Null值分配给CustomerID。 这该怎么做?

无法加载工具箱项。 它将从工具箱中删除

我有一个WinForm应用程序。 我也为它创建了自己的User Control 。 一切都很好。 直到今天,当我尝试将其添加回我的程序时,我收到了错误消息(我从未将其删除.Visual Studio确实如此)。 无法加载工具箱项#UserControlName。 它将从工具箱中删除。 我在我的解决方案资源管理器中有它,但在此错误后它从我的工具箱中消失了。 我也收到警告说: 永远不会将“#UserControlName”赋值给,并且其默认值始终为null。 当我看到我的设计师代码时,这是真的。 但我没有用我的设计师代码做任何事情。 我的用户控件是在那里定义的,但没有实例化。 我怎么能把它还掉? 这与我将构建平台从x32更改为x64这一事实有什么关系吗? 如果是这种情况,我会感到惊讶,因为该程序在更改后工作正常。

在ASP.NET用户控件中公开复杂属性

我想从自定义ASP.NET用户控件中公开一个复杂属性,以便可以从aspx页面中的控件标记设置它 。 像这样的东西: public class TestData { public int X; public int Y; } public partial class TestControl : System.Web.UI.UserControl { public TestData TestProperty { get { return ViewState[“TestProperty”] as TestData; } set { ViewState[“TestProperty”] = value; } } } 然后在包含控件的页面的.aspx文件中,我希望有类似的内容:

如何在初始化期间访问UserControl的XAML设置属性?

我们正在编写自定义UserControl(而不是无形控件),我们需要根据消费者在XAML中控制的属性执行一些初始化。 现在在大多数情况下,您使用Initialized事件(或OnInitialized覆盖),因为在触发时,已应用所有XAML集属性,但在UserControl的情况下,情况并非如此。 触发Initialized事件时,所有属性仍处于默认值。 我没有注意到其他控件,只是UserControls,它们在构造函数中调用InitializeComponent()是不同的,所以作为测试,我注释掉了行并运行代码,果然,这次是在Initialized期间事件,属性设置。 以下是一些代码和测试结果,certificate了这一点…… 在构造函数中调用InitializeComponent的结果: (注意:值仍未设置) TestValue (Pre-OnInitialized): Original Value TestValue (Initialized Event): Original Value TestValue (Post-OnInitialized): Original Value InitializeComponent的结果已完全注释掉: (注意:虽然已设置值,但未加载控件,因为它需要InitializeComponent) TestValue (Pre-OnInitialized): New Value! TestValue (Initialized Event): New Value! TestValue (Post-OnInitialized): New Value! // Event *was* called and the property has been changed 所有这些说,我可以使用什么来初始化我的控件基于XAML中的用户设置属性? (注意:加载已经太晚了,因为到那时控件应该已经初始化了。) XAML片段 TestControl.cs public partial class TestControl : UserControl […]

ASP.NET中的Viewstate和控件

我几天前发布了一个关于viewstate的问题,经过一些测试后,我得出了一些结论/结果。 基于这些结果,我有一些关于某人如何做某些事情的问题。 以下是我运行的测试结果: 如果从页面的OnInit加载usercontrolA,那么他的视图状态将在OnLoad可用。 usercontrolA从其OnInit加载的所有其他控件将在其OnLoad准备好其viewstate。 如果从Page的OnLoad加载usercontrolA,那么他的视图状态将在OnPreRender可用。 usercontrolA从其OnLoad加载的所有其他控件将在其OnPreRender提供其视图状态。 如果usercontrolA是从一个事件加载的(例如:按钮点击。事件在OnLoad之后和OnPreRender之前触发),那么他的视图状态将不可用。 usercontrolA loades的所有其他控件都不会提供其viewstate。 因此,在一个完美的世界中,您总是会使用情境#1加载所有控件,以便他们的视图状态可以在他们的OnLoad 。 不幸的是,当您需要从按钮单击或OnLoad加载控件时,是否无法控制在OnPreRender阶段之前获取其视图状态? 我已经阅读了一堆关于viewstate的文章,并且认为我理解它,但是在我当前的应用程序上加载加载其他用户控件的usercontrols,我真的很难在我的叶子上获得viewstate(最后在链中) )usercontrol。 任何建议和/或链接表示赞赏。

开发向导UI – WPF

全部在WPF中: 开发向导应用程序后,用户必须先回答一些简单的问题才能进入主应用程序。 然后主应用程序预先填充从向导获得的信息。 我从一个Window开始,然后我计划添加用户控件。 主窗口将在第一行中具有用户控件,然后使用“下一个”和“上一个”按钮来控制在第二行中的控件之间移动。 这样我就可以轻松控制屏幕之间切换的逻辑,如: WizardControl1.IsVisible = false; WizardControl2.IsVisible = true; 但由于某种原因,用户控件没有IsVisible的setter。 欢呼。 所以我想我只会在向导的每个部分使用单独的窗口。 这种方法的问题在于,现在当踩到它们之间时,窗口以随机位置打开,并且通过向下通过向导进行操作,下一个窗口随机弹出,这实在令人分心和令人沮丧。 那么如何正确开发向导呢? 我不明白为什么这么难……不完全是火箭科学……在按下下一个/上一个之后替换文本和控件并存储输入! 谢谢

如何修复嵌套的winform控件闪烁问题

我目前正在开发一个程序,该程序使用相当复杂的嵌套winform控件结构,当用户进行某些选择时,这些控件会动态更改。 有关控件的具体布局的详细信息,请参阅此问题。 在进行选择时,会对由用户控件控制的基础模型进行大量更新。 然后,这导致所显示的控件的大小/位置/可见性的一系列相应变化。 所有这些变化都会导致屏幕上控件的剧烈闪烁。 我需要以某种方式修复此问题,以便每次用户进行选择时,屏幕基本上都会冻结,直到所有控件更新完成。 我试图在许多不同的地方和方式使用Control.SuspendLayout / Control.ResumeLayout方法,我无法消除疯狂的闪烁。 我认为在更改期间暂停根控件上的布局可以解决问题,但看起来这个SuspendLayout在更改子控件时没有帮助。 我是否需要使用其他方法而不是SuspendLayout? 有没有办法我可以调试SuspendLayout,看看为什么它似乎没有级联到所有的子控件?

C#:如何让用户控件正确自动resize

我有一个UserControl ,它由Label (Top), FlowLayoutPanel (Fill,TopDown流程和无包装)和Panel (Bottom)组成。 用户控件根据获取的内容列表创建许多控件,并将它们添加到FlowLayoutPanel 。 如何让这个UserControl正确调整自身大小,以便FlowLayoutPanel没有任何滚动条? 我试图在FlowLayoutPanel和UserControl本身上使用AutoSize和AutoSizeMode各种组合,但我似乎无法让它工作。 要么我最终得到的东西根本没有自我调整,要么它不会变得足够大或者它被压缩到几乎没有。