Я категорически не согласен с некоторыми рекомендациями здесь. GraphQL можно использовать реляционным способом, но его также можно использовать в режиме без sql. Firebase, с ее RTD и firestore, должна быть смоделирована как база данных no-sql, потому что это база данных no-sql !, есть компромиссы к этому подходу:
1. Оптимизированное чтение:
Как база данных без sql, коллекции должны быть смоделированы как ваши взгляды на ваших клиентах (мобильных или веб-сайтах), поэтому, когда вы делаете запрос, все уже слито, и вы не должны делать расчетные реквизиты в клиенте, а также функции firebase. Этот подход делает чтение действительно ДЕЙСТВИТЕЛЬНО быстрым.
2. Де-оптимизированная запись:
Основной компромисс заключается в том, что вы несете ответственность за обновление каждого документа в базе данных, если вы касаетесь связанных данных (например, обновите имя пользователя, изображение профиля и т. Д.). В этом случае вы должны найти каждый документ в своей базе данных (IE: сообщения, комментарии и т. Д.) И обеспечить атомарность. Этот подход рекомендуется, если у вас есть приложение, которое будет иметь гораздо больше операций чтения, чем операции записи (например, в блоге, 7000 читает 1 запись в качестве примера)
3. Простота в масштабировании:
Поскольку ваши коллекции не имеют жестких отношений с другими документами, вы можете иметь полную коллекцию только на одном сервере или разделить ее среди многих из них (поэтому, почему базовая станция дешева для масштабирования, например dynamoDB ).
GraphQL - это только язык запросов, он должен упростить вам запрос, но он не должен диктовать, как вы моделируете свою базу данных, вы должны диктовать, как моделировать вашу базу данных, ваши запросы и мутации .
При установке свойства AcceptButton Формы на одну из Кнопок на Форме Вы получите то поведение по умолчанию.
Иначе, устанавливает свойство KeyPreview на Истинный на Форме и обрабатывают ее событие KeyDown. Можно проверить на клавишу Enter и принять необходимые меры.
Можно определять кнопку как "AcceptButton" в свойствах Формы, и это поймает, любой "Вводит" нажатия клавиш в форму и направляет их к тому управлению.
Видят эта статья MSDN и отмечают несколько исключений, которые она обрисовывает в общих чертах (многострочные текстовые поля, и т.д.)
Форма имеет свойство KeyPreview, которое можно использовать для прерывания нажатия клавиши.
Установите атрибут KeyPreview на своей форме к Правда, затем используйте событие KeyPress на своем уровне формы для обнаружения клавиши Enter. На вызове обнаружения любой код Вы имели бы для "отправлять" кнопки.
Как было сказано ранее, установите свойство AcceptButton вашей формы на одну из ее кнопок И установите для свойства DialogResult для этой кнопки значение DialogResult. ОК , чтобы звонящий знал, был ли диалог принят или отклонен.