怎样操作动态创建的对象 ((label)this.FindName("label1")) .content类型转换一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题乱说的吧this.FindName("label1") = "123"; 这样才会提示FindName只能用于等号的右边this.FindName("label1").content 这样的,我看你content的首字母是小写的,不是ide自动帮你完成的吧,是你自己手写的,FindName返回的是object对象,没有content属性,要转换。我让页面动态创建了Label对象label,label.Name = "label1",页面动态创建是什么意思?控件要么在设计时创建,在页面拖控件,要么运行时创建,在代码new出来,你说的在页面动态创建,理解不了。FindName是WPF一类的,不是普通的Windows窗体程序,你确定没看错书?是在学WPF?还是在学WP手机开发? 如果是在页面拖了一个label控件, <Label Content="Label" Height="28" HorizontalAlignment="Left" Margin="40,184,0,0" Name="label1" VerticalAlignment="Top" />那在后台代码写 (this.FindName("label1") as Label).Content = "123";就可以了 噢,是WPF里面的,问题中的代码是手打的,所以没那么严谨Label是这样创建的:Label mylabel= new Label();mylabel.Name = "123"; 噢,是WPF里面的,问题中的代码是手打的,所以没那么严谨Label是这样创建的:Label mylabel= new Label();mylabel.Name = "123";Name="123"是不对的吧,Name不能用数字开头的关键是你既然是后台生成的,为什么不直接用mylabel呢?mylabel.Content = "123"不久可以了 噢,是WPF里面的,问题中的代码是手打的,所以没那么严谨Label是这样创建的:Label mylabel= new Label();mylabel.Name = "123";Name="123"是不对的吧,Name不能用数字开头的关键是你既然是后台生成的,为什么不直接用mylabel呢?mylabel.Content = "123"不久可以了额,这是手打的,只是方便理解用你在3L的那个方法,问题解决了,谢谢啊 我还想问下:“运行时创建,在代码new出来”这个不是叫动态创建吗?如果不是,那动态创建是指什么?俺是小白一个,求轻喷 new出来是动态创建,你说的"我让页面动态创建了" 这个不好理解,我现在也稀里糊涂,不知道你是怎么解决的,我3楼就是做了类型转换,按说你new出来的是不需要findname来使用的。 我是循环创建了一堆Label然后加入一个StackPanel,再把StackPanel加入一个UniformGrid里面的:for (int i = 0; i < count; i++){ Label lb1 = new Label(); Label lb2 = new Label(); lb1.Name = "seat" + i + "_lb1"; lb2.Name = "seat" + i + "_lb2"; StackPanel sp = new StackPanel(); sp.Name = "seat" + i + "_sp"; this.UniformGrid.Children.Add(sp); this.UniformGrid.RegisterName(sp.Name, sp); sp.Children.Add(lb1); sp.RegisterName(lb1.Name, lb1); sp.Children.Add(lb2); sp.RegisterName(lb2.Name, lb2);}所以我后面只能根据我给label赋的Name值去操作这些Label你说的new出来的是不需要findname来使用是怎么回事? 我的意思是可以通过lb1和lb2来控制,你可以放在某个字典集合里,不过从你现在的代码来看,通过查找Name来控制也是一个好办法,不用改了吧。 C#中何时使用static? checkbox的点击事件 请问如何读取资源图片的某一个矩形区域填充到控件image属性里? 如何在泛型类中取值? 出现乱码? HttpListener做服务器的问题 DataTable中的数据查找问题 关于在C#中使用一个C++中的结构问题,谢谢 insert update 语句的编写 在c#中关于值类型和引用类型的一个迷惑!!!! 如何获取第三方软件中显示的数据?有图,望大神解答 .csproj文件中提示<UseIISExpress>标签无效,是什么问题呢
this.FindName("label1") = "123"; 这样才会提示FindName只能用于等号的右边this.FindName("label1").content 这样的,我看你content的首字母是小写的,不是ide自动帮你完成的吧,是你自己手写的,FindName返回的是object对象,没有content属性,要转换。我让页面动态创建了Label对象label,label.Name = "label1",页面动态创建是什么意思?控件要么在设计时创建,在页面拖控件,要么运行时创建,在代码new出来,你说的在页面动态创建,理解不了。FindName是WPF一类的,不是普通的Windows窗体程序,你确定没看错书?是在学WPF?还是在学WP手机开发?
<Label Content="Label" Height="28" HorizontalAlignment="Left" Margin="40,184,0,0" Name="label1" VerticalAlignment="Top" />
那在后台代码写
(this.FindName("label1") as Label).Content = "123";
就可以了
Label是这样创建的:Label mylabel= new Label();mylabel.Name = "123";
Label是这样创建的:Label mylabel= new Label();mylabel.Name = "123";Name="123"是不对的吧,Name不能用数字开头的关键是你既然是后台生成的,为什么不直接用mylabel呢?mylabel.Content = "123"不久可以了
Label是这样创建的:Label mylabel= new Label();mylabel.Name = "123";Name="123"是不对的吧,Name不能用数字开头的关键是你既然是后台生成的,为什么不直接用mylabel呢?mylabel.Content = "123"不久可以了额,这是手打的,只是方便理解用你在3L的那个方法,问题解决了,谢谢啊
我还想问下:“运行时创建,在代码new出来”这个不是叫动态创建吗?如果不是,那动态创建是指什么?俺是小白一个,求轻喷
我是循环创建了一堆Label然后加入一个StackPanel,再把StackPanel加入一个UniformGrid里面的:
for (int i = 0; i < count; i++)
{
Label lb1 = new Label();
Label lb2 = new Label();
lb1.Name = "seat" + i + "_lb1";
lb2.Name = "seat" + i + "_lb2";
StackPanel sp = new StackPanel();
sp.Name = "seat" + i + "_sp";
this.UniformGrid.Children.Add(sp);
this.UniformGrid.RegisterName(sp.Name, sp);
sp.Children.Add(lb1);
sp.RegisterName(lb1.Name, lb1);
sp.Children.Add(lb2);
sp.RegisterName(lb2.Name, lb2);
}
所以我后面只能根据我给label赋的Name值去操作这些Label
你说的new出来的是不需要findname来使用是怎么回事?