佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: chrizyuen2

[挑战自我] 欢迎任何C#疑难杂症(编写完整软件除外)

  [复制链接]
发表于 15-11-2011 02:46 PM | 显示全部楼层
回复 119# chrizyuen2
谢谢你的post, 你有所不知
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 15-11-2011 02:50 PM | 显示全部楼层
回复  chrizyuen2
谢谢你的post, 你有所不知
loonloon0625 发表于 15-11-2011 02:46 PM


说来听看...
回复

使用道具 举报

发表于 16-2-2012 09:22 AM | 显示全部楼层
请问 WPF 的 styling  design 有什么网站有教程?我还是新手 用着 expression blend , 但很少教学 总是学不会
回复

使用道具 举报

 楼主| 发表于 16-2-2012 09:45 AM | 显示全部楼层
回复 123# kimson101

youtube 最好。。
回复

使用道具 举报

发表于 17-2-2012 12:29 PM | 显示全部楼层
回复 124# chrizyuen2


  例如?
回复

使用道具 举报

 楼主| 发表于 17-2-2012 12:44 PM | 显示全部楼层
回复

使用道具 举报

Follow Us
发表于 21-2-2012 10:15 PM | 显示全部楼层
想请问你懂的那里有的download java racing game 的 source code ma?虽然不关c的事,但也想你帮帮忙
回复

使用道具 举报

发表于 25-3-2012 12:01 AM | 显示全部楼层
请问这位大大有autocomplete的列子供我参考吗?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 26-3-2012 09:23 AM | 显示全部楼层
请问这位大大有autocomplete的列子供我参考吗?
shadowpriest 发表于 25-3-2012 12:01 AM


ajax? 还是其他?
回复

使用道具 举报

发表于 4-4-2012 10:48 PM | 显示全部楼层
关于C#问题,google但找不到,可能keyword不好找。希望LZ可以帮忙。

我要做一个比较dynamic的binding,我有一个class,class里有一个的class level variable:
Dictionary<string,object> _properties

一个default property
public object this[string Name]

我想用binding方法把一个textbox the text bind过来,
textbox1.Databindings.add("Text",Class1,"this[Name]"
因为只可以bind property,有没有方法可以做得到?

先谢了。
回复

使用道具 举报

 楼主| 发表于 6-4-2012 01:56 PM | 显示全部楼层
本帖最后由 chrizyuen2 于 6-4-2012 04:29 PM 编辑

回复 130# twigky


  1.     public class DataClass
  2.     {
  3.         private Dictionary<string, object> _properties = new Dictionary<string, object>();
  4.         private string _key = "Name";
  5.         public string Name
  6.         {
  7.             get { return _properties[_key].ToString(); }
  8.             set { _properties[_key] = value; }
  9.         }

  10.         public DataClass()
  11.         {
  12.             _properties[_key] = "Initial value";
  13.         }
  14.     }
复制代码
  1. textBox1.DataBindings.Add("Text", _data, "Name");
复制代码
回复

使用道具 举报

发表于 7-4-2012 11:43 AM | 显示全部楼层
回复  twigky


chrizyuen2 发表于 6-4-2012 01:56 PM



谢谢。。其实我想要做的,是dynamic的class。
不要将中间的class hardcode着property name。就算不同的form 也可以reuse.
所以要bind去一个如dictionary那样的Object。。
比如
From1:
Name: textbox

Form2:
Itemcode: textbox

我可以reuse相同的class,只是bind去dictionary property...
回复

使用道具 举报

 楼主| 发表于 7-4-2012 11:48 AM | 显示全部楼层
回复 132# twigky

那要dynamic就要用dotnet 4.0了。 迟点给你答案。
回复

使用道具 举报

 楼主| 发表于 7-4-2012 12:50 PM | 显示全部楼层
本帖最后由 chrizyuen2 于 7-4-2012 01:00 PM 编辑

回复 132# twigky
那个不能因为它不是properties, 它的名字叫indexer. this["indexer"] 当作array这样读取。但是却不能写新value 进去。你需要自己做TextChanged Event 了。

  
  1.     public class DataClass
  2.     {
  3.         private Dictionary<string, object> _properties = new Dictionary<string, object>();
  4.         public object this[string name]
  5.         {
  6.             get
  7.             {
  8.                 if (_properties.ContainsKey(name))
  9.                 {
  10.                     return _properties[name];
  11.                 }
  12.                 return null;
  13.             }
  14.             set
  15.             {
  16.                 _properties[name] = value;
  17.             }
  18.         }
  19.     }
复制代码



  1.         private DataClass _data  = new DataClass();
  2.         private void Form1_Load(object sender, EventArgs e)
  3.         {
  4.             string indexer = "New";
  5.             _data[indexer] = "Initial value";
  6.             textBox1.DataBindings.Add("Text", _data[indexer], "" );
  7.             
  8.         }

  9.         public void button1_Click(object sender, System.EventArgs e)
  10.         {
  11.             MessageBox.Show(_data["New"].ToString());
  12.         }
复制代码
回复

使用道具 举报

发表于 7-4-2012 03:45 PM | 显示全部楼层
谢谢!
不懂原来还可以这样。
4.0以下不能?
还以为一定要bind object,property name as param。。
回复

使用道具 举报

 楼主| 发表于 7-4-2012 04:10 PM | 显示全部楼层
回复 135# twigky

4.0 的expandoObject我test了,textBox 不会反应。WPF 不会反应 ,所以你还是放弃吧
回复

使用道具 举报


ADVERTISEMENT

发表于 7-4-2012 08:12 PM | 显示全部楼层
回复  twigky

4.0 的expandoObject我test了,textBox 不会反应。WPF 不会反应 ,所以你还是放弃吧 {:by ...
chrizyuen2 发表于 7-4-2012 04:10 PM


不明白,可以简单的解释下吗?
回复

使用道具 举报

 楼主| 发表于 7-4-2012 08:29 PM | 显示全部楼层
不明白,可以简单的解释下吗?
twigky 发表于 7-4-2012 08:12 PM


星期一发完整code给你.
回复

使用道具 举报

发表于 7-4-2012 09:29 PM | 显示全部楼层
明白了。
test过了你给我的code, concept。
因为没有property bind,所以当data改的时候,是不会trigger property set。
如果dictionary改的话,也不会trigger textbox change,应该是这样吧?

谢谢。
回复

使用道具 举报

 楼主| 发表于 7-4-2012 09:55 PM | 显示全部楼层
本帖最后由 chrizyuen2 于 7-4-2012 09:58 PM 编辑

回复 139# twigky

你可以这样检查,你就发现dictionary的indexer不是property.
  1. DataClass data  = new DataClass();
  2. PropertyInfo[]  infos = data.GetType().GetProperties();
复制代码

Dictionary 改变,你可以用 INotifyPropertyChanged.来追踪.
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.propertychanged.aspx
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 30-10-2025 04:45 AM , Processed in 0.506581 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表