Как получить доступ к наследованным средствам управления в разработчике winforms

Хотелось бы отметить, что у виджета DatePicker пользовательского интерфейса jQuery есть очень хороший метод утилиты проверки даты, который проверяет формат и действительность (например, даты 01/33/2013 не допускаются).

Даже если вы не хотите использовать виджет datepicker на своей странице в качестве элемента пользовательского интерфейса, вы всегда можете добавить его библиотеку .js на свою страницу и затем вызвать метод validator, передав значение, которое вы хотите проверить в нем. , Чтобы сделать жизнь еще проще, в качестве входных данных используется строка, а не объект JavaScript Date.

См .: http://api.jqueryui.com/datepicker/

. Он не указан как метод, но он есть - как вспомогательная функция. Найдите на странице слово «parsedate», и вы найдете:

$. Datepicker.parseDate (формат, значение, настройки) - извлечение даты из строкового значения в указанном формате.

Пример использования:

var stringval = '01/03/2012';
var testdate;

try {
  testdate = $.datepicker.parseDate('mm/dd/yy', stringval);
             // Notice 'yy' indicates a 4-digit year value
} catch (e)
{
 alert(stringval + ' is not valid.  Format must be MM/DD/YYYY ' +
       'and the date value must be valid for the calendar.';
}

(Более подробную информацию о форматах даты можно найти на http://api.jqueryui.com/datepicker/#utility-parseDate )

В приведенном выше примере вы не увидите предупреждающее сообщение, поскольку «01/03/2012» является датой, действующей в календаре, в указанном формате. Однако если вы, например, сделаете 'stringval' равным '13/04/2013', вы получите предупреждающее сообщение, поскольку значение '13/04/2013' недействительно в календаре.

Если переданное строковое значение успешно проанализировано, значением 'testdate' будет объект даты Javascript, представляющий переданное строковое значение. Если нет, это было бы неопределенным.

10
задан Ksempac 26 June 2009 в 12:42
поделиться

5 ответов

Когда вы пытаетесь получить доступ из унаследованного элемента управления с помощью конструктора к TableLayoutPanel, объявленной в базовом элементе управления, вы используете функцию WinForms под названием «Визуальное наследование».

К сожалению, TableLayoutPanel не поддерживает визуальное наследование: http://msdn.microsoft.com/en-us/library/ms171689%28VS.80%29.aspx

Вот почему TableLayoutPanel кажется заблокированным в унаследованных элементах управления.

11
ответ дан 4 December 2019 в 00:26
поделиться

Try adding this attribute to the definition of the panel (this may or may not help):

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
1
ответ дан 4 December 2019 в 00:26
поделиться

Вы должны сами разработать базовые элементы управления. Изменения отражаются в конструкторе после успешного перестроения проекта элементов управления. Если вы сделаете участников общедоступными, вы можете редактировать их, но изменения не сохранятся.

0
ответ дан 4 December 2019 в 00:26
поделиться

Попробуйте создать ParentControlDesigner для своего элемента управления, переопределив InternalControlDesigner и вернув (designerHost.GetDesigner (tableLayoutPanel) как ControlDesigner) . designerHost - это (IDesignerHost) component.Site.GetService (typeof (IDesignerHost)) .

0
ответ дан 4 December 2019 в 00:26
поделиться

Я смутно помню, как решил аналогичную проблему, поместив базовый класс в его собственную DLL и сначала построим его. Я покопался, но не могу найти проект. Извините.

0
ответ дан 4 December 2019 в 00:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: