我用一个文本框和一个richtextbox创建了一个C#usercontrol.
如何从usercontrol外部访问richtextbox的属性.
例如..如果我把它放在一个表单中,我怎么能使用richtextbox的文本属性???
谢谢
大家好,
好的,进一步了解我的自定义控件冒险......
总之,这是我已经了解了自定义控件的三个主要"类".如果有任何错误,请随时纠正我!
好的,所以在玩自定义复合材料时,我发现了以下内容:
所以,我承认,我是新手,所以我可能会偏离上面提到的一些观点.
因为我知道有多少好的控制开发可以缩短整体开发时间,所以我很想在脑子里真正坚定.
我期待你的回答^ _ ^
我正在寻找可以用作时间线控件的东西.一种"横幅",用户可以向左或向右拖动以及时前进或后退,然后他或她应该能够在该控件上选择一个时间点.
一个奇特的日期时间选择器:-)
有任何想法吗?
我的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页面,它使用一个母版页,该按钮位于一个内容控件中,并且所有页面都设置为在服务器上运行正常,页面运行并且显示正常,除了这个按钮分辨率问题!
有任何想法吗?
我希望在其他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事情是如何做到最好的干净方式的呢?
在开发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) 我有一个有点复杂的UserControl,Visual Studio 2008在使用它时给了我一个相当无害的烦恼.每次我使用Designer打开控件时,它都会决定立即更改设计器设置的一些无害值 - 即Size属性的初始化.如果我保存这些更改,关闭并重新打开,它几乎总是最终决定我的控件的另一个组件需要更改初始大小,无限制.幸运的是,这些变化是无害的,因为我在任何地方都使用自动调整大小,但这对于使用来说非常烦人.我不知道从何处开始弄清楚出了什么问题,我现在唯一想到的是Designer每次打开控件时都会将自动调整大小的结果分配回初始大小字段.关于原因/修复的任何想法?
编辑:此外,我正在使用应用程序设置来保存应用程序运行中某些可调整大小的子组件的大小,但我真的希望Designer足够聪明,以了解它应该只使用默认值.
c# user-controls visual-studio-2008 windows-forms-designer winforms
我有一个带有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.这该怎么做?
这是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.
我有一个WinForm申请.我也User Control为它创造了自己的.一切都很好.直到今天,当我尝试将其添加回我的程序时,我收到了错误消息(我从未将其删除.Visual Studio确实如此).
无法加载工具箱项#UserControlName.它将从工具箱中删除.
我在我的解决方案资源管理器中有它,但在此错误后它从我的工具箱中消失了.我也收到警告说:
'#UserControlName'永远不会被赋值,并且将始终具有其默认值null.
当我看到我的设计师代码时,这是真的.但我没有用我的设计师代码做任何事情.我的用户控件是在那里定义的,但没有实例化.我怎么能把它放回去?
它有什么关系,我改变了我的构建平台的事实x32来x64?如果是这种情况,我会感到惊讶,因为该程序在更改后工作正常.
user-controls ×10
c# ×6
asp.net ×4
.net ×2
controls ×2
data-binding ×2
winforms ×2
wpf ×2
binding ×1
datacontext ×1
listbox ×1
mvvm ×1
properties ×1
richtextbox ×1
types ×1