propertygrid
및 datetimepicker
을 사용하여 시간 (시 및 분) 만 선택하려고합니다.
나는 내 편집자를 만들었습니다.propertygrid에서 datetimepicker를 사용하여 시간 선택
이 코드 : 당신은 개체 사이에 변환하는 System.ComponentModel.TypeConverter
를 구현해야 할
public class Tests
{
private DateTimePicker time = new DateTimePicker();
[Editor(typeof(MyEditor), typeof(UITypeEditor))]
public DateTimePicker Time
{
get { return time; }
set { time = value; }
}
public Tests()
{
time.Format = DateTimePickerFormat.Time;
time.CustomFormat = "hh:mm";
time.Value = DateTime.Now;
DateTime t = new DateTime();
}
}
class MyEditor : UITypeEditor
{
IWindowsFormsEditorService editorService;
DateTimePicker picker = new DateTimePicker();
public MyEditor()
{
picker.Format = DateTimePickerFormat.Custom;
picker.CustomFormat = "hh:mm";
picker.ShowUpDown = true;
picker.ValueChanged += new EventHandler(picker_ValueChanged);
}
void picker_ValueChanged(object sender, EventArgs e)
{
this.editorService.CloseDropDown();
}
public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (provider != null)
{
this.editorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
}
if (this.editorService != null)
{
DateTimePicker tmp = (DateTimePicker)value;
tmp.CustomFormat = "hh:mm";
tmp.Text = tmp.Value.ToString();
picker = tmp;
this.editorService.DropDownControl(picker);
}
return value;
}
public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.DropDown;
}
}
내가 typeConverters 익숙하고 많이 만들어, 아직이 방법은 조금 더 쉽게. 입력에 감사드립니다. – guyl