Tag: 用户控制

在派生的C#用户控件中处理Windows通知

如何处理从.NET TreeView控件派生的C#类中列出的任何树视图通知? 我试图处理点击通知,例如,像这样: class ExtendedTreeView : TreeView { private const Int32 NM_FIRST = (Int32)(0U – 0U); private const Int32 NM_CLICK = unchecked((Int32)((UInt32)NM_FIRST – 2U)); protected override void WndProc(ref Message m) { if (m.Msg == NM_CLICK) { MessageBox.Show(“NM_CLICK”); } base.WndProc(ref m); } } 但永远不会显示消息框。 这是我第一次尝试使用Win32 API来修改.NET控件的行为,所以我不知道出了什么问题。 这是处理这些通知的正确方法吗? 仅供参考:我知道.NET TreeView控件有一个click事件。 这只是第一次测试。 后来我想启用TVS_EX_MULTISELECT样式。 由于.NET TreeView控件在启用AfterSelect时不会触发任何AfterSelect事件,因此我想稍后调查TVN_SELCHANGED和TVN_ITEMCHANGED通知的行为。

UserControl:如何添加MouseWheel Listener?

我正在创建一个UserControl,如果鼠标在控件上并且MouseWheel被旋转,它应该做出反应。 目前我正在这样做,如下所示: public MyUserControl() { this.MouseWheel += new MouseEventHandler(MouseWheelHandler); } private void MouseWheelHandler(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Delta > 0) incIndex(); if (e.Delta < 0) decIndex(); } protected override void OnMouseEnter(EventArgs e) { this.Focus(); base.OnMouseEnter(e); } 事实上这很好,但问题是“this.Focus();”的部分。 因为它破坏了我的表单/应用程序行为。 是否有更好的方法来实现这一目标?

查找嵌套在Repeater Control中的控件

我试图找到通过 UserControl在Repeater中呈现的TextBoxes的值,即Repeater有UserControl的占位符,而UserControl内部是TextBox标记实际存在的位置。 我以前用直接在 Repeater 里面的TextBoxes做过这个,这是相当直接的,我想知道为什么这显然不能以同样的方式完成。 这是带有Repeater的Default页面,其中包含一个Placeholder … Faculty Information …以及插入Placeholder位置的UserControl … Faculty Salary Form …但是当以下代码运行Display按钮的OnClick时,我总是得到UserControl中任何和所有TextBoxes(和DropDowns)的空值… protected void DisplayEntries(object sender, EventArgs e) { foreach (RepeaterItem repeated in rptBudget.Items) { TextBox txtPercentage = (TextBox)repeated.FindControl(“txtPercentage”); if (txtPercentage == null) { lblCtrls.Text += ” null; “; } else { lblCtrls.Text += txtPercentage.Text + “; “; } } } 访问这些值的最佳方法是什么? […]

C#强制ListBox更新元素

我是标准ListBox控件的子类。 我收到有关添加到列表中的任何元素的更改的通知。 任务是更新ListBox显示的文本以更改元素。 我知道我可以删除已更改的元素并再次添加它,但出于明显的原因,这似乎不太可取。

在ASP.NET中加载嵌套的UserControl

我有一个嵌套控件无法正确加载的问题。 我尝试了各种页面方法,似乎没有任何工作。 编辑:该网站编译并运行良好 – 它只是留下一个空白的屏幕。 基本上我有一个图表的包装器控件,允许我选择数据,绑定和自定义图表与大量的抽象。 我需要另一个包装器控件,因为可能有一组我想要表示的图表。 广义的答案也会很棒。 这就是我所拥有的。 我用填充符替换了我的自定义属性/属性: Default.aspx的: OuterUserControl.ascx: OuterUserControl.ascx.cs: private member variables Att1 Att2 protected void Page_Load(object sender, EventArgs e) { for(int i=0;i<5;i++) { InnerUserControl cuc = new InnerUserControl(id); holder.Controls.Add(cuc); } } InnerUserControl.ascx: InnerUserControl.ascx.cs: private int id; //private member variables public InnerUserControl(int id) { this.id = id; this.chart = new Chart(); […]

UserControl中的AJAX ScriptManager

我有一个UserControl,其中包含一个UpdatePanel,它包含一些其他控件。 UserControl将用于已有ScriptManager的一些页面和其他没有ScriptManager的页面。 我希望UserControl自动带来自己的ScriptManager(如果不存在)。 我已经尝试过ScriptManager.GetCurrent,如果它返回null,我创建自己的ScriptManager并将其插入到Form中,但我无法在UserControl的生命周期中尽早找到一个位置来运行此代码。 我一直收到错误“带ID的控件’uPnlContentList’需要页面上的ScriptManager。ScriptManager必须出现在任何需要它的控件之前。” 每次我尝试加载页面。 我尝试运行我的代码的地方是OnInit,CreateChildControls和PageLoad,它们永远不会被调用,因为它在到达它们之前就已经死了。 我应该把这张支票放在哪里?

UserControl的事件处理程序没有触发

我动态地将UserControl加载到MultiView控件中的View中。 虽然UserControl添加了一个事件处理程序,但事件永远不会触发。 我在这里想念的是什么? 谢谢! 包含ASPX页面: protected override void OnPreRender(EventArgs e) { if (MultiView1.ActiveViewIndex == 2) //If the tab is selected, load control { Control Presenter = LoadControl(“Presenter.ascx”); (MultiView1.ActiveViewIndex.Views[2].Controls.Add(Presenter); } base.OnPreRender(e); } Presenter.ascx.cs override protected void OnInit(EventArgs e) { Retry.Click += this.Retry_Click; //This is a .Net 2.0 project base.OnInit(e); } protected void Retry_Click(object sender, EventArgs e) […]

以编程方式将用户控件添加到页面,同时保留已存在的控件

我试图在运行时将用户控件添加到div中。 我可以添加控件no probelem但它会覆盖之前添加的控件。 基本上,我正在尝试将乘客添加到旅行系统中 – 乘客的详细信息在用户控制之下,我事先并不知道会有多少乘客。 我有一个新的乘客按钮,它应该将新用户控件添加到div中,而不会覆盖前一位乘客。 代码是c#/。net 4。 我试图将控制数据保存到viewstate并重新添加新的,但这也不起作用。 这是我正在使用的代码片段 foreach (Control uc in p_passengers.Controls) { Passenger p = uc as Passenger; if (p != null) { p.SaveValues(); } } 但是,p.SaveAs()(只是将控制值写入ViewState)永远不会被命中。 我确定它只是一些愚蠢但有任何想法? 干杯伙计们。

显示自定义控件的自定义图标?

在visual studio中创建自定义控件时,您可以获得此选项 丑陋的小紫色齿轮用于控制图标而不是自定义控件 。 那么如何更改我的控件图标呢?

相同类型的Object的InvalidCastException – 自定义控件加载

我有一个非常有线的错误,我的一个自定义控件似乎是创建两个编译文件,当我尝试使用LoadControl()动态加载它时只是失败,因为无法将一个转换为另一个 – 即使它们正是相同。 我写的消息看到的一切都是一样的,只是改变了编译过的dll。 System.Web.HttpUnhandledException (0x80004005): Exception of type ‘System.Web.HttpUnhandledException’ was thrown. —> System.InvalidCastException: [A]ASP.Modules_OneProduct_MedioumImage cannot be cast to [B]ASP.Modules_OneProduct_MedioumImage. Type A originates from ‘App_Web_kg4bazz1, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ in the context ‘Default’ at location ‘C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\80ed7513\10eb08d9\App_Web_kg4bazz1.dll’. Type B originates from ‘App_Web_oneproduct_mediumimage.ascx.d1003923.4xoxco7b, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ in the context ‘Default’ at location ‘C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\80ed7513\10eb08d9\App_Web_oneproduct_mediumimage.ascx.d1003923.4xoxco7b.dll’. 代码 […]