0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
||||||
1 | ||||||
.NET 4.x Как изменять значение переменной bool, который находится в объекте, если я его передал в другой класс22.07.2016, 13:49. Показов 2306. Ответов 22
Метки нет (Все метки)
У меня есть статический объект Vars.MainConfig и в нем есть 2 bool Vars.MainConfig.Hello и Vars.MainConfig.Goodbye.
Так же у меня есть keyboard hook, которым вызывается функцию Work() при любом нажатие на клавиатуру. Я хочу сделать динамическую систему биндов, что бы когда я нажимал допустим F1, менялось значения для Vars.MainConfig.Hello. А когда я нажимал на F2 менялось значение для Vars.MainConfig.Goodbye. Хочу получить класс который сможет работать с любыми bool и переключать их. Кол-во bool заранее не известно. Вот мой класс
0
|
22.07.2016, 13:49 | |
Ответы с готовыми решениями:
22
Написание оператора if, который присваивает значение х переменной y, только если х находится между 1 и 20 Как вызвать метод класса, если его имя находится в переменной? Как передать значение локальной переменной в другой класс? (схема внутри) как передать значение переменной которую я вводил в одном классе в другой класс (ввожу я в консоле) |
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
22.07.2016, 13:56 | 2 |
SLIpros, Если Vars статический он и так доступен из любого места в программе по имени класса, в котором объявлен.
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
|
22.07.2016, 14:06 [ТС] | 3 |
Это все и так понятно, я привел пример, что таких статичных объектом может быть N. И мне нужно работать с каждым. Я хочу сделать конструктор, в котором я бы мог совмещать изменения значений bool с нажатием на клавишу. Хочу универсальный класс, который заранее не знает о всех bool, но смог бы их переключать, если я бы в него их(bool) передал.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
22.07.2016, 14:08 | 4 |
Не делайте их статичными. Создавайте экземпляры классов и передавайте в нужные методы/классы. Экземпляры классов передаются по ссылке, соответственно и изменении значения переменной в одном месте изменение отразиться во всех остальных местах.
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
||||||
22.07.2016, 14:31 [ТС] | 5 | |||||
А можно пример? Я че то видно не то делаю.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|||||||||||
22.07.2016, 14:50 | 6 | ||||||||||
SLIpros, Если честно, я не знаю что такое BindAction. По-этому мне тяжело понять что конкретно вы хотите добиться именно этим куском кода.
Я говорил о том, что если у вас есть класс, например
foo.Bar = !foo.Bar; это изменение мы сможем увидеть во всех местах, где к этому экземпляру есть доступ.
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
||||||
22.07.2016, 15:10 [ТС] | 7 | |||||
BindAction можно найти в моём первом сообщение, а я выложил кусок кода, который я поменял. И вроде я все сделал так как вы сказали.
Добавлено через 6 минут Это так же ничего не изменило, значение внутри BindAction меняется, а вот внутри экземпляра класса нет.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
22.07.2016, 15:20 | 8 |
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
|
22.07.2016, 15:31 [ТС] | 9 |
Я выкладываю код который я меняю, если посмотреть на мой первый пост, то вы увидите где он меняется.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
22.07.2016, 15:33 | 10 |
может я ослеп, но я не вижу изменений существующего. Я вижу создание нового экземпляра, а это совсем другая песня.
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
|
22.07.2016, 15:37 [ТС] | 11 |
Функция Work(); Если непонятно когда она вызывается, почитайте описание.
А как мне быть? Мне нужно сделать то, что я описал в первом посте.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
22.07.2016, 16:10 | 12 |
SLIpros, так. Я проверил - всё нормально меняется. Давайте разбираться что у вас не получается и в каком месте?
Я делал так - объявил класс с публичной булевой переменной. Создал массив этих классов. Передал один из них в другой класс. Изменил в другом классе значение переменной. Проверил состояние переменных массива - изменения произошли. Что вы делаете по другому?
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
||||||
22.07.2016, 16:26 [ТС] | 13 | |||||
Накидал тестовый код, который полностью отражает то что делаю я.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
22.07.2016, 16:42 | 14 |
SLIpros, из кода я вижу, что вы создали объект Test, передали его в класс Binds, создали там словарь со значениями типа BindAction, и свойству Action присвоили значение из Test. Потом в коде инвертируете значения этих свойств. Так, а что не получается то?
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
|
22.07.2016, 16:43 [ТС] | 15 |
Когда я инвертируете их в функции Work(), мне нужно что бы и оригинальные значения, в данном случае в объекте test - менялись.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
22.07.2016, 16:45 | 16 |
А объект Test у вас уничтожается, поскольку после передачи из него значений переменных больше нигде не используется.
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
|
22.07.2016, 16:55 [ТС] | 17 |
Можно мне пример как бы вы вышли из данной ситуации?
Просто менять объект Test внутри класса Binds я не могу, так как по моему условию объект может быть вовсе и не Test. Мне нужно передавать ссылку на переменную и менять значение этой переменной в функции Work.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
22.07.2016, 17:08 | 18 |
SLIpros, самое сложное - чётко сформулировать задачу. Не как "передать что-то куда-то", а что нужно получить в итоге, какую проблему пользователя должна решить программа.
То что вы спрашиваете для мена равносильно как сделать шаг . Грубо говоря на этот вопрос я ответил. Но чтобы действительно помочь мне надо увидеть задачу в целом как дойти до библиотеки .
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
|
|
22.07.2016, 17:21 [ТС] | 19 |
Смысл такой: у меня есть несколько классов с разными настройками, я хочу сделать систему биндов(функция и клавиша), что бы пользователь моей программы мог выбрать функцию и клавишу, по которой он будет вкл\выкл данную функцию. Типа конструктор.
Пример: Пользователь открывает конструктор, нажимает клавишу "создать", ему открывается меню где он может выбрать несколько предложенных значений "Вкл\выкл свет на кухне" и "Вкл\выкл подсветку на квадрокоптере", дальше выбирает клавишу. Допустим он выбрал клавишу F1 и значение "Вкл\выкл свет на кухне", дальше он жмет сохранить. И теперь когда он нажимает на клавишу F1 свет на кухне Вкл\Выкл. Только таких значений может быть не 2, как я предложил. А 1000, и какие-то пользователь захочет использовать, а какие-то нет.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||||||
22.07.2016, 17:55 | 20 | |||||
SLIpros,
SLIpros, пояснения нужны? Добавлено через 7 минут ) не дочитал до этого момента. Дописывать код уже не буду. Влом. Можно добавить ещё один булевый флаг, который можно выставить в false, если пользователь не хочет выполнения действия и соответственно проверять его в DoAction() .
0
|
22.07.2016, 17:55 | |
22.07.2016, 17:55 | |
Помогаю со студенческими работами здесь
20
Как присвоить переменной файл если, допустим, путь к файлу находится в переменной s? Значение переменной bool выводится как 13, чей глюк? Перекинуть значение переменной в другой класс Можно ли узнать если объект находится на объекте? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |