MenuItem 選單1 = new MenuItem();
MenuItem 選單2 = new MenuItem();
MenuItem 選單3 = new MenuItem();
請問如何得出 string m1="選單1";
我測驗使用 string m1=選單1.Name;
以及使用 string m1=選單1.Header;
都得到空白值。
但是我在winform是可以正常獲取到的。
我想請教一下,怎么來獲取這個結果呢?
不能通過.RegisterName或者.Name賦值后參考,因為選單比較多,非常不方便。
我嘗試采用繼承的方式自定義控制元件來傳值,但是最終多了一部環節,也沒有有效的簡化代碼。
所以優先獲取控制元件我錄入的這個結果作為Name使用。
希望大神不吝賜教。
uj5u.com熱心網友回復:
public static string GetMemberName<T>(System.Linq.Expressions.Expression<System.Func<T>> memberExpression){
return ((System.Linq.Expressions.MemberExpression)memberExpression.Body).Member.Name;
}
uj5u.com熱心網友回復:
提示:無法將型別為“System.Linq.Expressions.SimpleBinaryExpression”的物件強制轉換為型別“System.Linq.Expressions.MemberExpression”。
我的使用方法:
MenuItemArray[i].Header = GetMemberName(() => MenuItemArray[i]);
MenuItemArray資料:(new MenuItem[] {選單1,選單2,選單3});
uj5u.com熱心網友回復:
或者換一種寫法是:選單1.Header = GetMemberName(() => 選單1);
uj5u.com熱心網友回復:
非常感謝。剛測驗了,第二種寫法可以,第一種寫法不行。我使用了 MenuItemArray[i] as MenuItem 和 (MenuItem)MenuItemArray[i] 都會提示上面的錯誤。
懷疑是經過了陣列轉換之后屬性變了。麻煩問下怎么處理呢
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/268706.html
標籤:C#
上一篇:子執行緒與主執行緒之間通信問題
