我有一個C#UserControl託管一個文本框。使用Graphics.DrawString來模擬TextBox渲染
當自定義控制被禁用,我想文本框,好像它是殘疾人+只讀(即不能灰色)被呈現。因此,當自定義控件捕獲EnabledChanged時,它相應地設置託管的TextBox屬性。
然而,用戶控件的啓用狀態的優先級高於一切,文本框仍呈現灰色的(儘管其內部的前景色是正確的)。
因此,我決定隱藏託管文本框時,自定義控制被禁用,並且吸取它自己。我可以使用各種ControlPaint.DrawXxx函數成功呈現文本框邊框。
然而,相對於原生渲染繪製時,在伸展後的輸出,文字的效果。也就是說,文本從完全相同的像素位置開始,但字符間距明顯更大。
我用文本框本身的字體進行渲染,所以我不知道我做錯了事情。我可以做的唯一理由是C#文本框直接由Windows(使用ExtTextOut Win32 API)呈現,這導致了明顯的差異。
我可以使用什麼選項來模仿原生TextBox呈現?
你的建議很好。我已經改變了我的策略,而不是擺弄控件的啓用/禁用狀態,我公開了一個ReadOnly屬性來驅動託管的TextBox是否是隻讀的。 – 2011-05-21 11:36:16