Я программирую на C #, используя XNA GS 4.0.
Я начал с попытки отловить события ввода с клавиатуры, которыми я управлял. То есть когда клавиша нажата, она вызывает событие клавиши благодаря помощи сканирования IMessageFilter для ввода с клавиатуры.
Это может показаться немного избыточным, но, поскольку XNA не позволяет запускать события ключа формы по умолчанию, это кажется простым решением.
Теперь, когда у меня есть и структура Message, и структура KeyEventArgs, которые я собрал из сообщения, я могу просто вызвать событие в основном кодовом файле.
Проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы текстовое поле отвечало на эти ключевые сообщения о событиях, как обычно.
Вопрос:
Я хотел бы отправить Сообщение в текстовое поле (расширенный класс), чтобы оно могло читать необходимые данные и отвечать, как обычно, без необходимости преобразовывать сообщение в один символ для добавления вручную. Спасибо.
Edit:
Исходный код для этой проблемы трудно предоставить для этой проблемы, поскольку на данный момент кода на самом деле очень мало.
Пока все, что я могу вам дать - это метод, который я использую для захвата окон. Сообщения
public class KeyboardFilter : IMessageFilter
{
public event EventHandler KeyboardMessage;
// This method is only used to detect key presses, it will NEVER remove any messages from the message loop
public bool PreFilterMessage(ref Message m)
{
if (KeyboardMessage != null)
KeyboardMessage(m, EventArgs.Empty);
return false; // Allow the message to be used by the message loop
}
}
Выходные данные этого фильтра - объект сообщения. Мне нужен какой-то способ заставить TextBox использовать это и обновить его свойство Text вручную, потому что XNA блокирует нормальный ввод с клавиатуры. Я хотел бы использовать что-то встроенное в TextBox, если оно существует, но при необходимости я могу вручную добавлять символы для каждой отдельной клавиши, нажимая сам. Я просто хочу знать, существует ли более элегантное решение.