急!.Net 中開制做winForm自定議控件時如何得到父窗口的顏色

hedahong 2006-01-16 04:29:54
在開發winForm自定議控件時如何得到父窗口的顏色?
如用(c#):
private Color _BColor = this.Parent.BackColor;
又無法通過編譯。

...全文
76 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangsang 2006-01-18
  • 打赏
  • 举报
回复
this.FindForm().BackColor
hedahong 2006-01-18
  • 打赏
  • 举报
回复
謝謝各位的回復,問題解決了。在這裡與大家分享一下。
1.在開發window 窗體的自定議控件時不能用"this.父容器"的寫法,不然都報錯,因為在設計時他沒有父容器。
2.後來我發現控件本身有一個BackColor屬性,開發自定義控件時默認是續承UserControl的如:
namespace ctlClock
{
public partial class myUserControl : UserControl
{
.............
因為每當我把我做的自定義控件拖到窗體裡,我發現它他有一個BackColor屬性,且和當前窗體的BackColor一樣。所以在設計控件時private _Bcolor=BackColor;就可以了。至於這個BackColor屬性它自身是如何實現的(也就是說使用時拖出時他和當前窗的BackColor是一樣的),我向上瀏覽了幾層基類都沒有看到他的BackColor屬性的實現,雖然找到了有一個BackColor屬性可用,但是這能在定義時這樣寫:
namespace ctlClock
{
public partial class myUserControl : UserControl
{
private Color _BColor = BackColor;
......
像上面這樣會報錯,你隻能在方法或構造函中訪問這個BackColor,我也不知道是什麼原因.
anningning821009 2006-01-16
  • 打赏
  • 举报
回复
Color a=this.FindForm().BackColor;

parent不一定是窗体
而FindForm检索控件所在的窗体。
xuemingfeng 2006-01-16
  • 打赏
  • 举报
回复
private Color _BColor = ((Form)this.Parent).BackColor;
感觉这句是不正确的,this.Parent不一定是窗体
this.Parent 应该是 Control 类型,你试一下这个
if(this.Parent!=null)
{
Color color=(this.Parent as Control).BackColor;
}
hedahong 2006-01-16
  • 打赏
  • 举报
回复
不行呀,兄弟,this在控件開發中不可用。
MyLf 2006-01-16
  • 打赏
  • 举报
回复
private Color _BColor = ((Form)this.Parent).BackColor;

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧