June 19,2006
加速 ListBox / ListView 加入新物件的方法
如果你有一堆的物件等著加入到 ListBox 或是 ListView 這些視窗元件時
記得先呼叫該元件的 SuspendLayout(),停止該物件的重繪更新
等到全部的物件都加入完成之後,再呼叫ResumLayout()
一口氣更新這些加入的物件
可以讓更新的動作快非常的多
另外,也可以使用AddRange來達到加速的效果
June 6,2006
Don't call constructor in constructor
Code:
public ref class ABC{
public:
ABC(){
m_pTestString = "TEST";
ABC(10);
}
ABC(int i){
Console::WriteLine("i={0}, Object={1}", i, m_pTestString);
}
void Test(){
Console::WriteLine(m_pTestString);
}
private:
String ^m_pTestString;
};
int main(array<:string ^> ^args)
{
ABC ^t = gcnew ABC();
Console::ReadKey();
return 0;
}
Result:
i=10, Object=
*m_pTestString 在ABC(int i)中被重新初始化,所以印不出值
June 3,2006
將傳統structure pointer 加入 .NET collection 物件中管理
很簡單......就是IntPtr
Struct testStruct{
int a;
int b;
};
testStruct *ts = new testStruct;
ArrayList^ tList = gcnew ArrayList();
tList->Add(gcnew IntPtr(ts));
-------------------------------------------------
取出:
testStruct *ts;
ts = (IntPtr^)tList[0]->ToPointer();
ts->a = 10;
ts->b = 10;