Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обнулить значение DateTimePicker. / 4 сообщений из 4, страница 1 из 1
28.05.2013, 22:53
    #38277584
Ay-y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить значение DateTimePicker.
Есть DateTimePicker, но если у него выбрано значение, то обнулить его невозможно.
Есть предположение что GetType(Nullable(Of DateTime)) в VB поможет решить проблему, но вот что-то перевести это в C# у меня не получается.
Может ещё какие решения есть? Как уважаемое сообщество обнуляет Календарь, без перепрятывания объекта или прочих плясок с бубном?
...
Рейтинг: 0 / 0
29.05.2013, 01:09
    #38277688
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить значение DateTimePicker.
Ay-y, попробуй вариант из обсуждения how to set datetimepicker with null value if date not selected(c# winforms) .

Скопирую ответ сюда на всякий случай. Когда нужно очистить DateTimePicker пишем:
Код: c#
1.
2.
yourDTP.Format = DateTimePickerFormat.Custom;
yourDTP.CustomFormat = " ";



Чтобы вернуть нормальное отображение обратно добавляем обработчик события CloseUp или ValueChanged с кодом:
Код: c#
1.
yourDTP.Format = DateTimePickerFormat.Short
...
Рейтинг: 0 / 0
29.05.2013, 08:37
    #38277791
sld
sld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить значение DateTimePicker.
а зачем обнулять то?
даже при первоначальной загрузке он обычно чота показывает.
...
Рейтинг: 0 / 0
29.05.2013, 11:05
    #38278061
IApple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обнулить значение DateTimePicker.
Ay-y,
Я использую такой компонент. Правда у него один недостаток: когда значения даты нету и фокус ввоода на контроле - этого не видно т.к. ни курсора не видать, ни цветом это не подсвечивается. Буду рад, если кто-то предложит решение, как єтот недостаток устранить.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
    [System.Drawing.ToolboxBitmap(typeof(System.Windows.Forms.DateTimePicker))]
    public class NullableDateTimePicker : DateTimePicker
    {
        public NullableDateTimePicker()
            : base()
        {
            base.Format = DateTimePickerFormat.Custom;
            this.NullValue = "";
            this.Format = DateTimePickerFormat.Short;
            this.Width = 80;
            this.DataBindings.CollectionChanged += new CollectionChangeEventHandler(DataBindings_CollectionChanged);
        }

        // true, when no date shall be displayed (empty DateTimePicker)
        private bool _isNull;

        // If _isNull = true, this value is shown in the DTP
        private string _nullValue;

        // The format of the DateTimePicker control
        private DateTimePickerFormat _format = DateTimePickerFormat.Short;

        // The custom format of the DateTimePicker control
        private string _customFormat;

        // The format of the DateTimePicker control as string
        private string _formatAsString;

        private static DateTime _ZeroDate = new DateTime(1900,1,1);

        private Color _nullFocusedBackColor = System.Drawing.SystemColors.ActiveCaption;
        public Color NullFocusedBackColor
        {
            get { return _nullFocusedBackColor; }
            set { _nullFocusedBackColor = value; }
        }

        public new String CustomFormat
        {
            get { return _customFormat; }
            set { _customFormat = value; }
        }

        public new DateTimePickerFormat Format
        {
            get { return _format; }
            set
            {
                _format = value;
                if (!_isNull) SetFormat();
                OnFormatChanged(EventArgs.Empty);
            }
        }
        private void SetFormat()
        {
            CultureInfo ci = Thread.CurrentThread.CurrentCulture;
            DateTimeFormatInfo dtf = ci.DateTimeFormat;
            switch (_format)
            {
                case DateTimePickerFormat.Long:
                    FormatAsString = dtf.LongDatePattern;
                    break;
                case DateTimePickerFormat.Short:
                    FormatAsString = dtf.ShortDatePattern;
                    break;
                case DateTimePickerFormat.Time:
                    FormatAsString = dtf.ShortTimePattern;
                    break;
                case DateTimePickerFormat.Custom:
                    FormatAsString = this.CustomFormat;
                    break;
            }
        }
        private string FormatAsString
        {
            get { return _formatAsString; }
            set
            {
                _formatAsString = value;
                base.CustomFormat = value;
            }
        }
        public new DateTime? Value
        {
            get
            {
                if (_isNull)
                    return null;
                else
                    return base.Value;
            }
            set
            {
                if (value == null)
                {
                    SetToNullValue();
                }
                else
                {
                    SetToDateTimeValue();
                    base.Value = (DateTime)value;
                }
            }
        }

        public int? ValueDay
        {
            get
            {
                if (_isNull)
                    return null;
                else
                    return ((DateTime)this.Value).Subtract(_ZeroDate).Days;
            }
            set
            {
                if (value == null)
                {
                    SetToNullValue();
                }
                else
                {
                    SetToDateTimeValue();
                    this.Value = (DateTime)_ZeroDate.AddDays((int)value);
                }
            }
        }

        private void SetToDateTimeValue()
        {
            if (_isNull)
            {
                SetFormat();
                _isNull = false;
                base.OnValueChanged(new EventArgs());
            }
        }
        private void SetToNullValue()
        {
            _isNull = true;
            base.CustomFormat = (_nullValue == null || _nullValue == String.Empty)
                                ? "" : "'" + NullValue + "'";
            base.OnValueChanged(new EventArgs());
        }

        public String NullValue
        {
            get { return _nullValue; }
            set { _nullValue = value; }
        }

        [StructLayout(LayoutKind.Sequential)]
        private struct NMHDR
        {
            public IntPtr HwndFrom;
            public int IdFrom;
            public int Code;
        }
        protected override void WndProc(ref Message m)
        {
                if (m.Msg == 0x4e)                         // WM_NOTIFY
                {
                    NMHDR nm = (NMHDR)m.GetLParam(typeof(NMHDR));
                    if (nm.Code == -746 || nm.Code == -722)  // DTN_CLOSEUP || DTN_?
                        SetToDateTimeValue();
                }
                base.WndProc(ref m);
        }

        protected override void OnKeyUp(KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                this.SetToNullValue();
                this.OnValueChanged(EventArgs.Empty);
            }
            base.OnKeyUp(e);
        }

        private void DataBindings_CollectionChanged(object sender, CollectionChangeEventArgs e)
        {
            if (e.Action == CollectionChangeAction.Add)
                this.DataBindings[this.DataBindings.Count - 1].Parse +=
                       new ConvertEventHandler(NullableDateTimePicker_Parse);
        }

        private void NullableDateTimePicker_Parse(object sender, ConvertEventArgs e)
        {
            //saves null values to the object
            if (_isNull)
                e.Value = DBNull.Value; // for binding data outside
        }

        // This member overrides Control.OnKeyPress
        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            if (this.Value == null)
            {
                Char chr = e.KeyChar;
                if (Char.IsNumber(e.KeyChar))
                {
                    // Set the Value to todays date
                    this.Value = DateTime.Now;
                    // The following two lines forces the 
                    // focus from the hidden checkbox to the month field
                    if (!this.ShowCheckBox)
                    {
                        this.ShowCheckBox = true;
                        this.ShowCheckBox = false;
                    }
                    // Resend the key pressed
                    SendKeys.Send(chr.ToString());
                }
            }
            base.OnKeyPress(e);
        }
    }
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обнулить значение DateTimePicker. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]