标签: user-controls

如何在C#中访问usercontrol的属性

我用一个文本框和一个richtextbox创建了一个C#usercontrol.

如何从usercontrol外部访问richtextbox的属性.

例如..如果我把它放在一个表单中,我怎么能使用richtextbox的文本属性???

谢谢

c# user-controls properties richtextbox

20
推荐指数
1
解决办法
4万
查看次数

ASP.NET自定义控件 - 复合材料

摘要

大家好,
好的,进一步了解我的自定义控件冒险......

总之,这是我已经了解了自定义控件的三个主要"类".如果有任何错误,请随时纠正我!

  1. UserControls - 继承自UserControl并包含在ASCX文件中.这些在他们能做的事情上非常有限,但是通过设计师支持获得一些UI通用性是一种快速而轻松的方式.
  2. 自定义复合控件 - 这些是从WebControl继承的控件,您可以在CreateChildControls方法中向控件添加预先存在的控件.这提供了极大的灵活性,但缺乏设计师支持而无需额外编码.它们是高度可移植的,因为它们可以编译成DLL.
  3. 自定义渲染控件 - 与自定义复合控件类似,这些控件将添加到Web控件库项目中.控制器的渲染完全由程序员通过重写Render方法来控制.

我的想法..

好的,所以在玩自定义复合材料时,我发现了以下内容:

  • 您很少/无法控制HTML输出,因此难以"调试".
  • 的CreateChildControls(以及随后的方法)可以得到真正的忙Controls.Add被(myControl)无处不在.
  • 我发现渲染表(无论是布局还是内容)都非常笨拙.

问题..

所以,我承认,我是新手,所以我可能会偏离上面提到的一些观点.

  • 你使用复合材料吗?
  • 你有任何巧妙的技巧来控制HTML输出吗?
  • 你只是说"地狱般的"并继续创建自定义渲染控件吗?

因为我知道有多少好的控制开发可以缩短整体开发时间,所以我很想在脑子里真正坚定.

我期待你的回答^ _ ^

.net c# asp.net user-controls controls

19
推荐指数
1
解决办法
3993
查看次数

一个好的WPF滚动时间轴控件?(花哨的日期时间选择器)

我正在寻找可以用作时间线控件的东西.一种"横幅",用户可以向左或向右拖动以及时前进或后退,然后他或她应该能够在该控件上选择一个时间点.

一个奇特的日期时间选择器:-)

有任何想法吗?

wpf user-controls controls custom-controls

19
推荐指数
3
解决办法
2万
查看次数

无法访问后面的代码中的控件ID

我的aspx页面中有以下代码:

 <asp:Button runat="server" ID="myButton" Text="hello" />
Run Code Online (Sandbox Code Playgroud)

这在我的代码背后:

protected void Page_Load(object sender, EventArgs e)
{ 
    myButton.Text = "bye"; 
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,intellisense在后面的代码中获取"myButton"id,但是当它编译时它说

它无法构建,因为它无法识别它!

我的页面是一个默认的aspx页面,它使用一个母版页,该按钮位于一个内容控件中,并且所有页面都设置为在服务器上运行正常,页面运行并且显示正常,除了这个按钮分辨率问题!

有任何想法吗?

c# asp.net user-controls aspx-user-control

19
推荐指数
2
解决办法
7万
查看次数

UserControl作为ListBox中的DataTemplate

我希望在其他UserControls(如页面或窗口)中重用我的UserControls作为DataTemplates,在此示例中在ListBox中.一切都是MVVM.

我有一个名为"CardControl"的UserControl来显示一个简单的对象"Card".卡有两个属性,"ID"和"CardImage".控件DataContext是通过XAML设置的.如果我在VS或Blend中打开此UserControl,它会向我显示我在相应ViewModel中定义的虚拟卡.

现在我有另一个名为"CardSetControl"的UserControl,它应该显示一组卡片.因此,ViewModel有一个名为"Cards"的ObservableCollection <Card>类型的属性.

这是代码:

<ListBox x:Name="MyList" ItemsSource="{Binding CardSet.Cards}">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel>

        <!-- WORKING, but not what i want -->
        <TextBlock Text="{Binding ID}" /> // would display ID of Card
        <Image Source="{Binding Image}" /> // would display Image of Card

        <!-- NOT WORKING, but this is how i want it to work -->
        <UserControls:CardControl DataContext="{Binding "Current listbox item as DataContext of CardControl???"}" />

      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

在阅读了大量关于MVVM和DataContext/Binding的文章之后,我仍然没有让它发挥作用.整个层次化的USerControls/DataContexts事情是如何做到最好的干净方式的呢?

datacontext binding user-controls listbox mvvm

19
推荐指数
2
解决办法
2万
查看次数

公开DependencyProperty

在开发WPF UserControls时,将子控件的DependencyProperty公开为UserControl的DependencyProperty的最佳方法是什么?以下示例显示了我当前如何在UserControl中公开TextBox的Text属性.当然有更好/更简单的方法来实现这一目标?

<UserControl x:Class="WpfApplication3.UserControl1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel Background="LightCyan">
        <TextBox Margin="8" Text="{Binding Text, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
    </StackPanel>
</UserControl>


using System;
using System.Windows;
using System.Windows.Controls;

namespace WpfApplication3
{
    public partial class UserControl1 : UserControl
    {
        public static DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(UserControl1), new PropertyMetadata(null));
        public string Text
        {
            get { return GetValue(TextProperty) as string; }
            set { SetValue(TextProperty, value); }
        }

        public UserControl1() { InitializeComponent(); }
    }
}
Run Code Online (Sandbox Code Playgroud)

data-binding wpf user-controls

18
推荐指数
1
解决办法
8196
查看次数

Visual Studio Designer总是试图改变我的控制

我有一个有点复杂的UserControl,Visual Studio 2008在使用它时给了我一个相当无害的烦恼.每次我使用Designer打开控件时,它都会决定立即更改设计器设置的一些无害值 - 即Size属性的初始化.如果我保存这些更改,关闭并重新打开,它几乎总是最终决定我的控件的另一个组件需要更改初始大小,无限制.幸运的是,这些变化是无害的,因为我在任何地方都使用自动调整大小,但这对于使用来说非常烦人.我不知道从何处开始弄清楚出了什么问题,我现在唯一想到的是Designer每次打开控件时都会将自动调整大小的结果分配回初始大小字段.关于原因/修复的任何想法?

编辑:此外,我正在使用应用程序设置来保存应用程序运行中某些可调整大小的子组件的大小,但我真的希望Designer足够聪明,以了解它应该只使用默认值.

c# user-controls visual-studio-2008 windows-forms-designer winforms

18
推荐指数
2
解决办法
9635
查看次数

将Null值分配给DataTable中的Integer列

我有一个带有Integer DataType的One ColumnName"CustomerID"的数据表.动态地我想向DataTable添加行.为此,我创建了一个DataRow对象,如:

  DataTable dt = new DataTable();
  DataRow DR = dt.NewRow();
  DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
Run Code Online (Sandbox Code Playgroud)

但是如果TextBox包含空字符串,则会抛出错误.在这种情况下,我想将Null值分配给CustomerID.这该怎么做?

c# asp.net user-controls types

18
推荐指数
2
解决办法
7万
查看次数

用户控件的属性在回发后丢失值

这是HTML.我有一个包含用户控件的转发器.

<asp:Repeater ID="rpNewHire" runat="server">
 <HeaderTemplate>
  <table>            
 </HeaderTemplate>
 <ItemTemplate>
  <tr>
     <td>
         <user:CKListByDeprtment ID = "ucCheckList" 
          DepartmentID= '<%# Eval("DepID")%>' 
          BlockTitle = '<%# Eval("DepName")%>' 
          runat = "server"></user:CKListByDeprtment>
     </td>
   </tr>
  </ItemTemplate>
  <FooterTemplate>
   </table>
  </FooterTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

DepartmentID是我在用户控件中定义的属性.

int departmentID;

public int DepartmentID
{
  get { return departmentID; }
  set { departmentID = value; }
}
Run Code Online (Sandbox Code Playgroud)

这就是我试图访问它的方式

protected void Page_Load(object sender, EventArgs e)
{
   int test = departmentID;
}
Run Code Online (Sandbox Code Playgroud)

当页面第一次加载时,departmentID有一个值.但是,当页面发回时,该值始终为0.

asp.net data-binding user-controls

18
推荐指数
1
解决办法
2万
查看次数

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

我有一个WinForm申请.我也User Control为它创造了自己的.一切都很好.直到今天,当我尝试将其添加回我的程序时,我收到了错误消息(我从未将其删除.Visual Studio确实如此).

无法加载工具箱项#UserControlName.它将从工具箱中删除.

我在我的解决方案资源管理器中有它,但在此错误后它从我的工具箱中消失了.我也收到警告说:

'#UserControlName'永远不会被赋值,并且将始终具有其默认值null.

当我看到我的设计师代码时,这是真的.但我没有用我的设计师代码做任何事情.我的用户控件是在那里定义的,但没有实例化.我怎么能把它放回去?

它有什么关系,我改变了我的构建平台的事实x32x64?如果是这种情况,我会感到惊讶,因为该程序在更改后工作正常.

.net c# user-controls visual-studio winforms

18
推荐指数
5
解决办法
2万
查看次数