Доступ к переменным в файлах

Я новичок в программировании и хочу научиться программировать на C#. Я шел довольно гладко и учился на сайтах в Интернете, но прямо сейчас я столкнулся с небольшой проблемой, для которой я не могу найти решение.

Я делаю простую утилиту, используя Visual Studio и Blend, и она состоит из некоторых пользовательских элементов управления, созданных с помощью Blend.

Одним из таких пользовательских элементов управления является тумблер, и чтобы определить, включен он или выключен, я создал логическую переменную.

private bool switchOn = false;

По сути, моя цель — обновить некоторый текст на экране в зависимости от значения этого логического значения.

Переменная для переключателя хранится в файле с именем «ToggleSwitch.xaml.cs» [ФОРМА A], а текст, который я хочу обновить, хранится в файле с именем «MainWindow.xaml.cs» [ФОРМА B].

Как мне использовать логическую переменную из [ФОРМЫ A] и реализовать ее в коде, используемом в [ФОРМЕ B].

Надеюсь, я ясно объяснил, что я хочу сделать, и был бы очень признателен, если бы кто-нибудь мог мне в этом помочь.

Краткий ответ, вероятно, изменится private bool switchOn = false; на public static bool switchOn = false;

mjwills 23.12.2020 14:54

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

Pirate 23.12.2020 14:59

Хорошая работа, чтобы пытаться учиться, и хорошая работа, чтобы задавать вопросы! Если переключатель находится на той же странице, что и текст, который вы хотите напечатать, вы, вероятно, можете получить к нему доступ, выполнив что-то вроде if (mySwitch.switchOn) { // print }. Здесь я предполагаю, что у вас есть переменная с именем mySwitch, которая представляет ваш переключатель. Также вам нужно изменить метод доступа вашей переменной (private) на public.

Glubus 23.12.2020 15:01

@mjwills Сделает ли это это доступной из других файлов в проекте, или мне также нужно как-то связать файлы?

IsuruA 23.12.2020 15:03

Если он находится в Bob.xaml.cs, я подозреваю, что вы сможете получить к нему доступ, например, с помощью Bob.switchOn.

mjwills 23.12.2020 15:04

@Glubus wdym «на той же странице». Код для переключателя и код для текста находятся в двух отдельных файлах. Я ищу способ реализовать переменные, созданные в форме 1, в форме 2. Например. если переключатель выключается и switchOn обновляется до false в форме 1, как мне получить значение этой переменной и реализовать его в форме 2 Еще раз спасибо за вашу поддержку!

IsuruA 23.12.2020 15:07

@IsuruA Когда я говорю «на той же странице», я имею в виду, что нахожусь там, предполагая, что переключатель находится на экране, который также содержит текст, который вы хотите вывести. Если это так, то и переменная-переключатель, и текстовая переменная должны быть доступны одновременно где-то в вашем коде. Это означает, что вам нужно найти эту точку в коде и использовать такие стратегии, как события, для объединения двух переменных. Если нет доступа к переменным, потому что они не отображаются одновременно, это означает, что вам придется общаться через прокси, например, через базу данных.

Glubus 24.12.2020 16:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
131
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Два подхода:

  1. Глобальные переменные (общее состояние). Просто сделайте переменную общедоступной статической в ​​FormA. А затем для доступа к нему используйте FormA.switchOn в FormB. Вот ответ на аналогичный вопрос.
  2. Прохождение данных через события. Это имеет событие нажатия кнопки, которое считывает значение, а затем вызывает другую страницу (formA), используя URL-адрес (строку запроса). Затем эта страница (formB) обращается к рассматриваемой переменной без глобального доступа.

Обратите внимание, как правило, (1) - плохая идея при переходе к производству. Избегайте общего состояния.

Другие вопросы по теме