Сохранение всплывающего окна в WPF открытым после щелчка по текстовому полюC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Сохранение всплывающего окна в WPF открытым после щелчка по текстовому полю

Сообщение Anonymous »

Я пытаюсь, чтобы всплывающее окно открывалось при щелчке по текстовому полю и оставалось открытым до тех пор, пока я не выберу вариант во всплывающем окне, не начну печатать или не щелкну где-нибудь еще.
Всплывающее окно останется открытым, только если я нажму и удержу кнопку мыши.
Вот xaml всплывающего окна: Вот код всплывающего окна:

Код: Выделить всё

    private void EmbodiedCarbonTextBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (sender is TextBox textBox)
{
_activeTextBox = textBox; // Store the active TextBox
if (!_isPopupOpen)
{
ValuePopup.PlacementTarget = textBox; // Position the Popup relative to the TextBox
ValuePopup.IsOpen = true; // Open the Popup
_isPopupOpen = true; // Set the flag
}
e.Handled = true; // Prevent the click from propagating further
}
}
private void NumberOnly_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("[^0-9.-]+");
e.Handled = regex.IsMatch(e.Text);

//if (_isPopupOpen)
// {
//    ClosePopup(); // Close the popup when typing starts
//}
}

private void EmbodiedCarbonTextBox_LostFocus(object sender, RoutedEventArgs e)
{
//if (_isPopupOpen)
//{
//  ClosePopup(); // Close the popup when focus is lost
//}
}

private void EmbodiedCarbonTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (_isPopupOpen)
{
ClosePopup(); // Close the popup when typing starts
}
}

protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
{
if (_isPopupOpen)
{
// Check if the click is outside the TextBox and the Popup
if (!_activeTextBox.IsMouseOver && !ValuePopup.IsMouseOver)
{
ClosePopup();
}
}

base.OnPreviewMouseDown(e);
}

private void PopupContent_ValueSelected(object sender, string selectedValue)
{
if (_activeTextBox != null)
{
_activeTextBox.Text = selectedValue; // Update the TextBox with the selected value
}
ClosePopup(); // Close the Popup after a selection
}

private void ClosePopup()
{
ValuePopup.IsOpen = false; // Close the Popup
_isPopupOpen = false; // Reset the flag
_activeTextBox = null; // Clear the active TextBox reference
}
}

А вот текстовое поле xaml в главном окне: Я считаю, что этот код соответствует минимально воспроизводимому примеру stackoverflow, однако, если вам нужна дополнительная информация, буду рад помочь!
Спасибо!>

Подробнее здесь: https://stackoverflow.com/questions/793 ... is-clicked
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»