Как настроить элемент управления MaskedEdit для приема только буквенно-цифровых значений в установщике Windows?

Я использую набор инструментов WIX для написания установщика (.msi), который принимает ключ продукта, который представляет собой 16-символьное буквенно-цифровое значение в паре из 4 символов, разделенных друг другом -, например. 0000-0000-0000-0000 я использую элемент управления MaskedEdit со следующим кодом.

<Control Id="Key" Type="MaskedEdit" X="75" Y="84" Width="252" Height="15" Property="ProductKey"  >
      <Text><![CDATA[<&&&&-&&&&-&&&&-&&&&>]]></Text>
    </Control>

введите здесь описание изображения

Он отображается на экране, как на картинке выше. Но это не мешает пользователю вводить специальные символы. Как я могу ограничить допустимый диапазон символов только буквенно-цифровыми? Я получаю эту статью на MaskedEdit, но не могу понять, как их использовать (что они подразумевают под alternate и как я могу использовать ^, чтобы вводить заглавные буквы?).


person goyaltushar92    schedule 18.04.2017    source источник


Ответы (1)


Казалось бы, это невозможно.

Значение «альтернативного» следующее: вы можете написать свое собственное пользовательское действие и в этом пользовательском действии обработать символы, которые соответствуют & иначе, чем те, которые соответствуют ^. Когда пользователь вводит символы в MaskedEdit, & и ^ ведут себя одинаково. Но после того, как пользователь нажмет кнопку, пользовательское действие может заглавными буквами использовать все символы вместо ^, оставляя символы вместо & без изменений.

Вы можете написать пользовательское действие, которое обнаружит, что входная строка содержит не буквенно-цифровые символы, и, когда пользователь нажмет кнопку, предупредит пользователя о том, что ввод недействителен.

person dvorn    schedule 18.04.2017
comment
не могли бы вы привести пример использования ^? - person goyaltushar92; 18.04.2017
comment
Для этого потребуется написать CA — около двух страниц. - person dvorn; 19.04.2017
comment
это означает, что нет значительного использования ^, ? и других. когда мы должны делать все в Калифорнии, верно? - person goyaltushar92; 20.04.2017
comment
Правильный. Без CA они все одинаковые. - person dvorn; 20.04.2017
comment
еще одна вещь, как пользовательское действие может знать, что использовались ^, & или ?? Я не сохранил <&&&&-&&&&-&&&&-&&&&> ни в одном свойстве. - person goyaltushar92; 20.04.2017
comment
CA использует функции MsiGetProperty/MsiSetProperty для получения/установки значений свойств. Таким образом, должно быть какое-то соглашение о том, какие свойства являются входными, а какие выходными. Например, MASK и USERINPUT являются входными свойствами, а NORMALIZEDUSERINPUT — выходными. Тогда вы должны были сохранить свою маску в свойстве MASK... - person dvorn; 20.04.2017