singlepost

Не набирается текст в TextBox (WPF) << На главную или назад  

Всем привет.

У меня возникла следующая проблема. Разрабатываю приложение. Отдельно пишется ядро, в котором реализовывается весь функционал приложения. Отдельно разрабатывается форма на WPF.

Дак вот. Когда я начал писать загрузчик всего приложения, который загружает ядро, форму и связывает их через интерфейсы, то получил такой непонятный фокус:
когда я пытаюсь набрать на форме в TextBox'е текст, то ничего не набирается. ВООБЩЕ НИЧЕГО НЕ НАБИРАЕТСЯ. Срабатывает только пробел и бэкспейс. Если же попробовать вставить в этот TextBox текст скопированный в буфер обмена, то все нормально вставляется. Однако если эту же форму запустить как самостоятельное приложение, то все набирается как и должно, то есть форма полностью рабочая.

Что это за странное поведение WPF-формы а именно TextBox'а и как с этим бороться?

7 ответов в теме “Не набирается текст в TextBox (WPF)”

  1. 7
    Святослав Панкратов ответил:

    catch (Exception e)
    {
    MessageBox.Show("Приложение или объект, вызвавший ошибку: " + e.Source + "\n\n" +
    "Метод, вызвавший исключение: " + e.TargetSite + "\n\n" +
    "Сообщение исключения: " + e.Message,
    "Ошибка");
    }
    }

    /// <summary>
    /// Действия при закрытии приложения.
    /// </summary>
    private void ClosedMainForm(object sender, EventArgs e)
    {
    Application.Exit();
    }
    }
    }
    }

  2. 6
    Святослав Панкратов ответил:

    Код весь не влез =)

  3. 5
    Святослав Панкратов ответил:

    Вот собственно загрузчик, при написании которого выявилось странное поведение формы:

    using System;
    using System.Windows.Forms;
    using Core;
    using Core.ProgramObject;
    using Core.CompilerConveyorController;
    using Forms;

    namespace Education_Studio
    {
    class Program
    {
    /// <summary>
    /// Точка входа в приложение.
    /// </summary>
    /// <param name="args">Аргументы, переданные при запуске приложения.</param>
    [STAThread] // Запросить, чтобы главный поток приложения вошел в однопоточный апартамент
    static void Main(string[] args)
    {
    try
    {
    // Включение всех визуальных стилей для приложения
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    // Запуск приложения как такогого
    MainApplication application = new MainApplication();
    application.Run();

    Application.Run();
    }
    catch (Exception e)
    {
    MessageBox.Show("Приложение или объект, вызвавший ошибку: " + e.Source + "\n\n" +
    "Метод, вызвавший исключение: " + e.TargetSite + "\n\n" +
    "Сообщение исключения: " + e.Message,
    "Ошибка");
    }
    }

    /// <summary>
    /// Главный класс приложения.
    /// </summary>
    private class MainApplication
    {
    /// <summary>
    /// Указатель на ядро компилятора.
    /// </summary>
    private Core.Core Core { get; set; }

    /// <summary>
    /// Указатель на интерфейс программы.
    /// </summary>
    private IProgramObject Program { get; set; }

    /// <summary>
    /// Указатель на интерфейс конроллера.
    /// </summary>
    private ICompilerConveyorController Controller { get; set; }

    /// <summary>
    /// Указатель на загрузочную форму.
    /// </summary>
    private LoadWindow LoadWindow { get; set; }

    /// <summary>
    /// Указатель на главную форму.
    /// </summary>
    private MainWindow MainWindow { get; set; }

    /// <summary>
    /// Запуск приложения.
    /// </summary>
    public void Run()
    {
    try
    {
    // Загрузка загрузочной формы
    LoadWindow = new LoadWindow();
    LoadWindow.Show();

    // Загрузка ядра
    this.Core = new Core.Core();
    this.Program = this.Core.GetProgramObject();
    this.Controller = this.Core.GetCompilerConveyorController();

    // Загрузка основной формы
    MainWindow = new MainWindow();
    MainWindow.Closed += ClosedMainForm;

    // Связываение формы и ядра

    // Уборка загрузочной формы
    LoadWindow.Close();

    // Финальное отображение программы
    MainWindow.Show();
    }
    catch (Exception e)
    {
    MessageBox.Show("Приложение или объект, вызвавший ошибку: " + e.Source + "\n\n" +
    "Метод, вызвавший исключение: " + e.TargetSite + "\n\n" +

  4. 4
    Виталий Паринов ответил:

    > Могу привести код загрузчика если хотите взглянуть.

    Да давай.

  5. 3
    Святослав Панкратов ответил:

    Мне кто-нибудь может помочь или хотя бы посоветовать в каком направлении копать?

  6. 2
    Святослав Панкратов ответил:

    Да нет. Ток вот причем тут могут быть интерфейсы? В интефейсах события не используются, то есть при нажатии кнопки, событие формы не перехватывается ядром.

    Кстати даже не производя связывание формы с ядром такая же проблема.

    Могу привести код загрузчика если хотите взглянуть.

  7. 1
    Леонид Максимов ответил:

    ваша связь через интерфейсы все портит?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.