Пользовательский элемент управления с пользовательским свойством выбора из объекта класса
Привет
Это сводит меня с ума, но я работаю над этим около недели и не могу добиться успеха.
У меня есть класс, и этот класс имеет много логических значений.
Например, общественные bool1,
public bool2 и т. д.
Теперь я хочу создать пользовательский переключатель с пользовательским свойством.
В этой области пользовательских свойств я выберу одно из логических значений моего класса из выпадающего списка. После этого, если boolean имеет значение true, переключатель будет проверен.
Я работаю над WindowsForm.
Как я могу это сделать?
Что я уже пробовал:
Скриншот то что мне нужно : пример — Postimage.org[^]
Richard Deeming
Вы планировали рассказать нам, какой из множества фреймворков пользовательского интерфейса вы используете?
(Windows Forms, WPF, ASP.NET веб-формы, ASP.NET MVC, ASP.NET ядро, Xamarin и т. д.)
У них у всех есть своя версия RadioButton
, и процесс написания пользовательского элемента управления будет совершенно разным для каждого.
tebdilikiyafet
О, как жаль. Я работаю над WindowsForm и использую VisualStudio.
[no name]
"Мне нужен пример кода для этого", gimme code - это не вопрос. То, что, как я думаю, вы хотите сделать из своего запутанного описания, называется привязкой данных.
tebdilikiyafet
Как я могу это сделать?
Это вопрос? Я сказал, что работал над этим целую неделю. Если бы у меня был ключ к пониманию того, как это может быть, я бы спросил об этом.
Ralf Meier
Я не понял вашего требования.
Возможно, вам следует объяснить свой контроль (который вы хотите создать), его свойство (или свойства) и то, что должно произойти с ними.
Также может быть полезен скриншот или еще какой-нибудь код.
Я очень хорошо знаком с настройкой элементов управления, но с вашим описанием я не знаю, что делать ...
tebdilikiyafet
Я добавил скриншот того, что мне нужно : https://postimg.org/image/5f1gkagk3/
Ralf Meier
То,что я вижу, - это Радиобаттон на бланке.
Нет никакой разницы в стандарте-Радиобуттон.
Но я попросил вас также объяснить ваше требование.
Что я видел :
у вас есть свойство под названием PLC-Var-do you want to created a .Нетто-Чми ? К какому ПЛК вы хотите подключиться ?
Чтобы сделать шаг вперед, важно, чтобы вы ответили на каждый вопрос как можно более полно ...
tebdilikiyafet
Да, нет никакой разницы в визуализации. У меня есть много сигналов для отображения,и я хочу сделать это с помощью переключателей. Мои сигналы логические, и я читаю их с OPC-сервера (KEPWARE). Теперь я хочу связать переключатель и сигнал одним щелчком мыши. Поэтому я хочу добавить пользовательское свойство в radiobutton. Да, я хочу сделать .Чистый HMI для ПЛК siemens S7300 - S71500 и beckhoff.
Обновленный скриншот : https://postimg.org/image/3tls32bh7/
Ralf Meier
Таким образом, вы хотите создать UserControl с несколькими Радиокнопками на нем.
Каждый из переключателей должны соответствовать свойство пользовательского элемента управления ?
Чтобы подключить ПЛК, вам нужно назначить переменное имя внутри ПЛК вашему Радиобуттону. Обычно это происходит с помощью своего рода Itemserver, который дает вам уведомление (событие), информирующее вас о том, что связанная переменная изменила свое значение.
Но я не знаю вашего OPC-сервера ... : (поддерживает ли он все 3 типа ПЛК ? Я надеюсь, вы знаете, что S7-300 отличается от S7-1500 (TIA), и оба они полностью отличаются от Beckhoff-PLC (ADS-Communication).
tebdilikiyafet
Сначала я прочитал все переменные из ПЛК с помощью переменных C #. Так что способ общения не важен. Я использую Kepware и ADS для связи. Я могу их сделать. Но мне нужна помощь, чтобы просто их отобразить. На C # много логических сигналов, и я хочу отображать их состояние с помощью radioButtons отдельно. У каждого сигнала будет своя собственная радиокнопка. Таким образом, на моем настраиваемом элементе управления будет только одна радиокнопка. И я свяжу это с логическим значением, используя область свойства. Например, в C # есть логическое значение, которое называется «bAirPressureIsOK». Он обновляет свой статус при каждом чтении из ПЛК. Здесь все нормально. Теперь я хочу связать это с переключателем на visualstudio designtime. Я перетащу радиокнопку в свою форму и выберу логическое значение bAirPressureIsOK из раскрывающегося списка. Этот раскрывающийся список покажет мне все логические значения в качестве опции.
Ralf Meier
Я понимаю ваше требование, потому что я также работаю в области автоматизации.
Но вы должны обдумать свой путь.
Теперь у вас есть метод (я думаю), который осуществляет связь с ПЛК и считывает все необходимые переменные в ваше приложение, чтобы все они были как C # -переменные. Но это ничего не меняет на вашем экране, потому что нет существующего соединения между вашими элементами управления (например, радиокнопкой) и переменными. Теперь вы можете сделать следующее: вы знаете элемент управления, который должен отображать состояние или значение переменной, и внутри вашего метода PLC_Read вы назначаете этим элементам управления соответствующие значения. Это способ, который можно было бы сделать ... но это не лучший способ. Лучше всего: вы создаете связь между переменной и элементом управления. В этом случае переменная автоматически манипулирует элементом управления, чтобы показать его значение. Эту работу обычно выполняют события ... и вам нужен список, в котором зарегистрирован каждый активный элемент управления, а также переменная, которую он должен использовать. Этот метод я назвал «Item-Server».
Если вы хотите пойти этим путем (я думаю, что это единственный возможный путь) Я мог бы попытаться помочь тебе ...
Но... сначала вы должны понять, как работает .Net (а также элементы управления)...