我似乎無法找到任何地方,任何有關如何使用GroupFormatter委託的示例,以便在使用ObjectListView控件時添加頁腳到我的組。如何使用GroupFormatter和ObjectListView控件
有沒有人有任何可以證明這一點的例子?我想從組標題中刪除文本並添加一個頁腳(每個頁腳不同的文本)。以及更改字體等。
任何示例都會非常有幫助。
我似乎無法找到任何地方,任何有關如何使用GroupFormatter委託的示例,以便在使用ObjectListView控件時添加頁腳到我的組。如何使用GroupFormatter和ObjectListView控件
有沒有人有任何可以證明這一點的例子?我想從組標題中刪除文本並添加一個頁腳(每個頁腳不同的文本)。以及更改字體等。
任何示例都會非常有幫助。
您可以分析代碼爲ObjectListView類的
public void MakeGroupies<T>(T[] values, string[] descriptions, object[] images, string[] subtitles, string[] tasks)
method。明確設置 GroupKeyGetter, GroupKeyToTitleConverter和 GroupFormatter屬性代表。
這是C#,但您的VB適應應該是直截了當的。我使用這個小測試類作爲綁定到列表視圖的對象類型。
public class TestClass
{
private readonly string _s;
private readonly float _f;
public TestClass(string p1, float p2)
{
this._s = p1;
this._f = p2;
}
[OLVColumn(DisplayIndex = 1, Name="S", Title="String")]
public string S {get {return this._s;}}
[OLVColumn(DisplayIndex = 2, Name = "F", Title = "Float")]
public float F {get {return this._f;}}
}
以免手動定義我使用的綁定對象中的屬性列性狀和
BrightIdeasSoftware.Generator.GenerateColumns(this.olv, typeof(TestClass));
呼叫在我使用的列表視圖的形式/用戶控制。其實這裏是完全隔離ObjectListView配置方法:
void SetData(TestClass[] objects)
{
// build list columns
Generator.GenerateColumns(this.olv, typeof(TestClass));
// use groups and make current column the priimary sort column
this.olv.ShowGroups = true;
this.olv.SortGroupItemsByPrimaryColumn = false;
// loop through columns and set properties
foreach(OLVColumn col in this.olv.Columns)
{
col.Groupable = true;
col.Sortable = true;
if(col.Name == "F")
{
col.MakeGroupies<float>(new float[] { 10f, 100f, 1000f }, new string[] { "<10", "10-100", "100-1000", ">1000" });
}
else if(col.Name == "S")
{
col.UseInitialLetterForGroup = false;
//
col.GroupKeyGetter = (obj) =>
{
TestClass tc = (TestClass)obj;
switch(char.ToLower(tc.S[0]))
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u': return true;
default: return false;
}
};
//
col.GroupKeyToTitleConverter = (o) => { bool b = (bool)o; return b ? "vowel" : "consonant"; };
//
col.GroupFormatter = (/*OLVGroup*/ group, /*GroupingParameters*/ parms) =>
{
string s = string.Format ("{0} {1}", group.GroupId, group.Id);
//group.BottomDescription = "BottomDescription: " + s;
//group.TopDescription = "TopDescription: " + s;
group.Footer = "Footer: " + s;
};
}
}
//
this.olv.RebuildColumns();
//
this.olv.SetObjects(objects);
}
你肯定會有每組一個不同的腳註。
你好,我知道你已經有一段時間了,因爲你爲我發佈了這個答案,但我冒險嘗試另一種方法來嘗試實現更簡單的解決方案。似乎工作良好,直到我需要添加額外的功能到我的ListView,因此我已經結束了在同一地點 - 但現在有了更多的知識。無論如何,我仍然(不幸)似乎不能讓我的頭在你的代碼周圍,我仍然只爲每個分組項目獲得相同的頁腳。我不確定我要去哪裏錯,但希望你可以把你的例子簡化得簡單一點。 – Riples
好吧,從來沒有想過...試驗和錯誤,一個小小的代碼轉換和一些研究很長的路要走。我的數據填充座標位於數據填充循環內,因此每次都返回最後一個頁腳數據。我會將您的答案標記爲已接受,因爲您的代碼絕對會讓我走上正軌。我使用它與此鏈接[here](http://read.pudn.com/downloads105/sourcecode/windows/control/listview/432156/ObjectListViewDemo/MainForm.cs__.htm)再次感謝! – Riples
好的,我已經制定了如何添加頁腳,但我只能爲每個組添加相同的頁腳。如何在循環中添加頁腳?我的代碼是:OlvColumn1.GroupFormatter = Sub(group as OLVGroup,parms As GroupingParameters) group.Footer = tempDT.Rows(x)(「body」)。ToString End Sub – Riples
你應該改進/編輯你的問題或問一個問題新的一個。 –