作者:烦了_12664 | 来源:互联网 | 2023-05-17 14:20
各位专家,您好:最近遇到了一点问题,好几天都没有解决.请各位专家给些建设性的指导意见.谢谢.比如.我们在FORM1.CS[DESIGN]上拖放一个PROPERTYGRID控件,
各位专家,您好:
最近遇到了一点问题,好几天都没有解决.请各位专家给些建设性的指导意见.谢谢.
比如.我们在FORM1.CS[DESIGN]上拖放一个PROPERTYGRID控件,而这个控件有FONT的这样的一个属性,点击FONT后面[...],我们看到一个弹出的界面,上面有"字体","字形","大小"等等.
我现在想做的就是,通过点[...]出现一个自己定义的界面(当然不是在FONT属性后),这个界面上有TEXTBOX,COMBOBOX等控件,然后得到TEXTBOX,COMBOBOX所输入的值.插入数据库当中.
如果有什么说的不清楚的地方,请提醒.谢谢.
十分感谢各位专家,技术上的带头大哥.谢谢.
QQ:147370451. MSN:LIXIN19821010@HOTMAIL.COM.
9 个解决方案
不知道有没有什么文档比较适合(C#语言),请大家推荐一下.谢谢
十分感谢hbxtlhx的回答.
另外还有一个比较傻的问题.
在点[...]弹出的页面中,其中分左右两边, 比如左边是:ITEM1,ITEM2,右边是ITEM1,ITEM2的TEXT,VALUE等属性.这是如何实现的.
我总是只能得到左边变量的值.
在加入[EditorAttribute(typeof(ListItemsCollectionEditor), typeof(UITypeEditor))]这句话.以下是我写的.
private ListItemsCollectionEditor _Items;
[EditorAttribute(typeof(ListItemsCollectionEditor), typeof(UITypeEditor))]
public ListItemsCollectionEditor Items
{
get
{
return this._Items;
}
set
{
this._Items = value;
}
}
虽然知道是错了,但是由于对这东西不熟悉,很多东西不懂,不知道错在哪里,请教,谢谢
刚刚自己乱做了一个,勉强能实现功能,贴上来,给大家群起而乐之. :)
class ArrayValueShow
{
private static ArrayValue y1 = new ArrayValue();
private static ArrayValue y2 = new ArrayValue();
private ArrayValue[] _Members = new ArrayValue[] { y1, y2 };
public ArrayValue[] Members
{
get
{
return _Members;
}
set
{
_Members = value;
}
}
}
class ArrayValue
{
public bool _ID;
public string _Name;
public string _Height;
public bool _Age;
public ArrayValue()
{
this._ID = false;
this._Name = "1010";
this._Height = "1010";
this._Age = false;
}
[DefaultValueAttribute(false)]
public bool ID
{
get { return this._ID; }
set { this._ID = value; }
}
public string Name
{
get { return this._Name; }
set { this._Name = value; }
}
public string Height
{
get { return this._Height; }
set { this._Height = value; }
}
[DefaultValueAttribute(0)]
public bool Age
{
get { return this._Age; }
set { this._Age = value; }
}
}
在前面实例化一下ArrayValueShow这个类,把他赋值给PROPERTYGRID的SELECTEDOBJECT.便可实现.
希望小弟在此能够达到抛砖引玉的效果.
谢谢大家关注.
十分感谢hbxtlhx的回答.
今天早上一来就试了一下您的代码,结果是:十分HAPPY.
但是还有一个小小的问题:
[EditorAttribute(typeof(myeditor), typeof(System.Drawing.Design.UITypeEditor))]
public youType youProperty
{
get{...}
set{...}
}
在这里,我用一个INT类型,没有任何问题.编译器完全被玩弄与孤掌中.演示的结果完全在预料之中.
可是又试了一下STRING[]类型,好象就不行了.具体代码如下:
private string[] _Name1 = new string[10] {"'C2=','乙烯',0,0", "'C3=','丙烯',0,0", "'BUT','丁二烯',0,0",
"'CBU','聚丁二烯',0,0","'C41','丁烯—1',0,0", "'C42','丁烯—2',0,0", "'IC4','异丁烯',0,0",
"'CIC','粗异丁烯',0,0", "'STR','苯乙烯',0,0", "'SBT','苯乙烯B-T',0,0" };
[CategoryAttribute("产品类型集合"), DisplayName("'CET','二、化工原料类小计'"), ReadOnlyAttribute(false)]
[EditorAttribute(typeof(myeditor), typeof(System.Drawing.Design.UITypeEditor))]
public string[] Name1
{
get
{
return _Name1;
}
set { this._Name1 = value; }
}
具体所指:点[...]可以弹出对话框.但是我需要的是在每个STRING后面显示[...],对每个STRING进行修改,插入操作.
现在我也在TROUBLE SHOOTING.如果您或者各位专家有空,闲暇时间,是否也可以帮帮小弟.
十分感谢各位的关注
VS2005的PROPERTYGRID控件是不是不支持对数组型的数据进行单一修改(即对数组的某一个元素出现[...]修改属性)?
弹出自定义对话框后的操作及逻辑取决于楼主的业务逻辑,可帮性不大了。
其实业务逻辑并不复杂,但是设计了好几个方案.感觉比较满意的:
一是HBXTLHX您提到的,但是自己整了很长时间,想对数组中的数据进行一一弹出界面,然后修改,没有什么进展.
二是我上面贴子的代码,能够符合要求,但是问题在于界面就没自定义的友好,对于用户来说则需要进行使用培训.
不管如何, 十分感谢HBXTLHX您的帮助.