我在System.Windows.Forms的ListView中的一個問題,我不能處理它自己,乞求幫助或暗示我在哪裏做錯了?
說明:
- 我有一個類 - 它命名爲cListViewItem(從定製的「C」),從標準ListViewItem的繼承,而是將它保存自己的數據處理類。現在,使用ListView.items.Add()添加cListViewItem到ListView類後,我似乎沒有任何控制該項目的名稱。
- 我的源代碼的片段(律改變這個帖子的目的)繼承的ListViewItem中的WinForms,C#,.Net2.0
using System.Windows.Forms;
cListViewItem:ListViewItem
{
// gives a basic idea
public cListViewItem(myclass DataStorage)
{
// constructor only stores DataStorage to a local variable for further use;
this._storage = DataStorage;
}
protected myclass _storage;
// and there goes the fun:
// I thought that ListView class uses .Text property when drawing items, but that is not truth
// my idea was to 'cheat' a little with:
new public String Text
{
get
{
// overriding a getter should be enough i thought, but i was wrong
return(some string value from DataStorage class passed via constructor);
// setter is not rly needed here, because data comes from this._storage class;
// in later stages i've even added this line, to be informed whenever it's called ofc before return(); otherwise VisualStudio would not compile
MessageBox.Show("Calling item's .Text property");
// guess what? this message box NEVER shows up;
}
}
}
我看到使用。文本制定者是很重要的,但是構造器是最後時刻我能做到這一點,之後創作cListViewItem是被添加到ListView Items屬性並顯示,所以沒有地方再次調用.Text =「」。
public cListViewItem(myclass DataStorage)
{
this._storage = DataStorage;
this.Text = DataStorage.String1;
// and if I add subitems here, I will see em when the ListView.View property be changed to View.Details
}
所以我會失明或什麼:
我的一段代碼,只有當我設置cListViewItem的構造像所有的東西的作品?當我使用cListViewItem.Text =「字符串」我會看到「字符串」 在ListView但是當我剛覆蓋。文本吸氣我看不到的物品:(
的ListView類對顯示項目的靈活性我想創建一個類,將我的自定義數據存儲類綁定到一個ListView類。在我的應用程序的下一個階段,我想綁定一個ListView中的選定項目的表單,這將允許我更改項目的我的自定義類)值。這就是爲什麼我想讓每個ListViewItems項目記住相應的自定義數據存儲類。
在ListView中顯示的名稱永遠不會是唯一的,所以多個相同的名稱都是允許的,但項目會因ID值而不同(數據庫 - );
我只是不明白爲什麼usi ng ListViewItem.Text setter完成這項工作,altho ListView類不使用ListViewItem.Text getter來顯示項目(我的MessageBox永遠不會彈出)??
請幫忙。
對於提示太多了,你是對的 - 這是規則。如果ListView使用從我的cListViewItem轉換爲ListView,這就足夠了,這是使用基類的方法(屬性)。無論我使用.Tag屬性還是派生類,我仍然需要使用.Text設置器。 Ty –
@KrzysztofP:太好了,如果修復它然後將其標記爲答案然後幫助其他人,並歡迎來到StackOverflow。 – Ian