页面有5个筹码按钮,分别代表的筹码是1、5、10、50、100,我想实现的功能是:点击一个筹码按钮,就在页面显示一个颜色相对应的筹码,点击第二个,就把第二个筹码摞在第一个上面,一次类推,如果出现5个1的筹码,就让它显示一个5的筹码,2个5的筹码就换成一个10的筹码,后面也一样;
因为我不确定筹码会摞多高,所以我用了一个for循环来堆筹码:
for (int i = 0; i < counter; i++)
{
Label lb = new Label();
lb.Width = 50;
lb.Height = 35;
lb.Name = "lbEAChip_Idle" + i;
lb.FontFamily = new FontFamily("LiSu");
lb.HorizontalAlignment = HorizontalAlignment.Left;
lb.VerticalAlignment = VerticalAlignment.Bottom;
lb.FontWeight = FontWeights.Bold;
Canvas.SetTop(lb, i * (-2));
lb.Background = Brushes.Transparent;
lb.HorizontalContentAlignment = HorizontalAlignment.Center;
lb.VerticalContentAlignment = VerticalAlignment.Center;
canEAChip_Idle5.Children.Add(lb);
}
但是后面的我就不知道怎么写了,而且那个lb.Name = "lbEAChip_Idle" + i;到后面我也不知道怎么获取这个值,哪位高手知道的教下我,或者给个思路,谢谢!
string lablbEAChip_Idle = "lbEAChip_Idle";
int intlbEAChip_Idle=lablbEAChip_Idle.Length;
foreach (UIElement element in canEAChip_Idle5.Children)
{
Label labn = element as Label;
if(labn!=null){
string name = labn.Name;
int i =int.Parse( name.Substring(intlbEAChip_Idle));
}
}
這裡的lab就是你上面的lab。i就等於你上面的i
能否解释下你那代码呢,刚学WPF不久,菜鸟一个,望包涵!
@路晚歌: canEAChip_Idle5.Children得到所有的 canEAChip_Idle5裏面的對象,
然後 Label labn = element as Label;對對象進行轉換。是否是label對象
if(labn!=null){
string name = labn.Name;
int i =int.Parse( name.Substring(intlbEAChip_Idle));
}
如果labn轉換成功,
labn.Name;得到對象的名稱
int i =int.Parse( name.Substring(intlbEAChip_Idle));取得 這個對象的 數值
name.Substring(intlbEAChip_Idle)是 取得從int intlbEAChip_Idle=lablbEAChip_Idle.Length;
開始的字符串
最後一步 在轉換成int類型int.Parse
@無限遐想: 謝謝!如果頁面摞了4個1的籌碼,我要是再加一個籌碼1的話,不讓它顯示5個籌碼1,而是顯示一個5的籌碼,你知道這個怎麼實現嗎,給個思路也行。
@路晚歌: 把显示位置的换成5不就行了吗?
@無限遐想: 怎麼獲得那個顯示的位置,顯示的位置不確定的,比方說:要是一直點的是籌碼1,那理所當然顯示的位置是第一個label,也就是最下面那個,但要是第一次點的是籌碼10的話,我再去點5次籌碼1,那那個顯示的位置就是第二個label了,本人愚鈍,邏輯不行,問題解決了加分謝謝!
@路晚歌: 这个应该是一个算法问题。你 每一个lab都有位置哦。只要够5,那么你就把5的位置用1代替了。然后不显示1哦。
@無限遐想: 还是没有解决,不过还是谢谢你的回答!