如何实现设计时控件属性联动,高手请进 winform的三级联动? 以前用控件做过一个,但我记得到最后有个地方被卡住了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 两种情况,一种是同一个控件 control1 修改a属性时,b属性变为隐藏或不可修改;一种是2个控件,修改control1的a属性时,control2的属性b同时发生变化。 能帮忙写个code示例不?多谢:) SharpDevleop源代码,看人家是怎么实现的 比如自定义一个用户控件这个控件中包括两个testbox公开的属性为ShowTestBox1ShowTestBox2然后再这个属性的SET里面写控制就可以了当ShowTestBox1为true时更改ShowTestBox2为false并且把testbox1的visible设为true,testbox2的visible为false lovefootball(蟑螂(生活就是扯淡--做人要放低姿态)) 不是两个控件,而是两个属性的联动。 楼主的要求我看是行不通的,在设计时如何去禁用一个属性呀?没听说过还可以这样的!>>>可以,我就做過,不過需要繼承控件自己寫一個類. GeDeL(. ) The Lives Of Others ( .) How? 以前做過一個ListView,需要改變A屬性的時候,B屬性會按照A屬性的取值變為可用與不可用,應該和LZ的要求差不多吧?不過現在在公司,沒有源代碼,霎時我也想不起具體的實現方法了,呵呵... -_-!晚上我把代碼發給你好嗎? 其實方法就是 lovefootball(蟑螂(生活就是扯淡--做人要放低姿态)) 說的那樣. GeDeL(. ) The Lives Of Others ( .)好,非常感谢:) 一個繼承自ListView的控件,增加了一個ColumnStyle的屬性,因為ListView的列是不能隱藏的,而且列寬可以隨意拖動改變,我就寫了一個控件,增加了隱藏任何列與可以設定列寬度不能改變這些特性,加上一個ColumnStyle的屬性,當ColumnStyle=Fixed,MinWidth/MaxWidth屬性變為不可用,當ColumnStyle=Sizeable,MinWidth/MaxWidth屬性變為可用:[ReadOnly(false)]public String XXX{get{};set{};}[ReadOnly(false)][System.ComponentModel.RefreshPropertiesAttribute(System.ComponentModel.RefreshProperties.All)]public HeaderStyle ColumnStyle{get{switch(m_columnStyle){case colStyle.Fixed:SetPropertyReadOnly(this, "MinWidth", true); <- 將"MinWidth"屬性變為不可修改 SetPropertyReadOnly(this, "MaxWidth", true); <- 將"MaxWidth"屬性變為不可修改break;case colStyle.Sizeable:SetPropertyReadOnly(this, "MinWidth", false); <- 將"MinWidth"屬性變為可修改 SetPropertyReadOnly(this, "MaxWidth", false); <- 將"MaxWidth"屬性變為可修改break;......default:break;}}set{......}}//這個就是重點了void SetPropertyReadOnly(object obj, string propertyName, bool readOnly){Type type = typeof(System.ComponentModel.ReadOnlyAttribute);PropertyDescriptorCollection props = TypeDescriptor.GetProperties(obj);AttributeCollection attrs = props[propertyName].Attributes; FieldInfo fld = type.GetField("isReadOnly", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.CreateInstance); fld.SetValue(attrs[type], readOnly);}切記一點,其他自定義的屬性,一定要加上[ReadOnly=false],否則當你調用上面這個函數的時候,所有屬性都會變成ReadOnly=true,影響使用!上面的東西都是從CSDN學來的,咔咔...具體出處是哪個帖子忘了... 一定要加上[ReadOnly=false]...>>>筆誤,應該是: [ReadOnly(false)] 搞定,多谢GeDeL(. ) The Lives Of Others ( .)另一个不同控件之间关联的问题以后再开帖问呵呵,结贴。 WPF 界面设计的风格化(求高手给解答) C#, 窗体在panel中打开后,如何再把它拿出来呢? 控制 图片 大小 比例 正则取a href 高手请进 如何知道 HttpWebRequest 连接超时了 還是安裝部署的問題 如何让一个窗口变成对话框? 应用程序中的服务器错 老问题 怎样获得一个picturebox框中图像的句柄???谢谢!没分了!!! c#调用com问题 添加1000条数据的怎么处理
两种情况,一种是同一个控件 control1 修改a属性时,b属性变为隐藏或不可修改;一种是2个控件,修改control1的a属性时,control2的属性b同时发生变化。
这个控件中包括两个testbox公开的属性为
ShowTestBox1
ShowTestBox2然后再这个属性的SET里面写控制就可以了
当ShowTestBox1为true时
更改ShowTestBox2为false
并且把testbox1的visible设为true,testbox2的visible为false
不是两个控件,而是两个属性的联动。
好,非常感谢:)
而且列寬可以隨意拖動改變,我就寫了一個控件,增加了隱藏任何列與可以設定列寬度不能改變這些特性,加上一個ColumnStyle的屬性,當ColumnStyle=Fixed,MinWidth/MaxWidth屬性變為不可用,當ColumnStyle=Sizeable,MinWidth/MaxWidth屬性變為可用:[ReadOnly(false)]
public String XXX
{
get{};
set{};
}[ReadOnly(false)]
[System.ComponentModel.RefreshPropertiesAttribute(System.ComponentModel.RefreshProperties.All)]public HeaderStyle ColumnStyle
{
get
{
switch(m_columnStyle)
{
case colStyle.Fixed:
SetPropertyReadOnly(this, "MinWidth", true); <- 將"MinWidth"屬性變為不可修改 SetPropertyReadOnly(this, "MaxWidth", true); <- 將"MaxWidth"屬性變為不可修改
break;
case colStyle.Sizeable:
SetPropertyReadOnly(this, "MinWidth", false); <- 將"MinWidth"屬性變為可修改 SetPropertyReadOnly(this, "MaxWidth", false); <- 將"MaxWidth"屬性變為可修改
break;
...
...
default:
break;
}
}
set
{
...
...
}
}//這個就是重點了
void SetPropertyReadOnly(object obj, string propertyName, bool readOnly)
{
Type type = typeof(System.ComponentModel.ReadOnlyAttribute);
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(obj);
AttributeCollection attrs = props[propertyName].Attributes;
FieldInfo fld = type.GetField("isReadOnly", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.CreateInstance);
fld.SetValue(attrs[type], readOnly);
}切記一點,其他自定義的屬性,一定要加上[ReadOnly=false],否則當你調用上面這個函數的時候,所有屬性都會變成ReadOnly=true,影響使用!上面的東西都是從CSDN學來的,咔咔...具體出處是哪個帖子忘了...
另一个不同控件之间关联的问题以后再开帖问呵呵,结贴。