曲无名 2023-06-01 15:05 采纳率: 80%
浏览 11
已结题

关于#c##的问题:wpf 使用winform中的propertyGrid控件输入内容时,文本框中原本的内容会清空(操作系统-windows)

wpf 使用winform中的propertyGrid控件输入内容时,文本框中原本的内容会清空,这是为什么?

下面是wpf引用winform的代码

      xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
      xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms")

   <wfi:WindowsFormsHost  Width="400" Height="300">
   <wf:PropertyGrid ToolbarVisible="False" HelpVisible="False" x:Name ="propertyGrid"></wf:PropertyGrid >
   </wfi:WindowsFormsHost >

img

  • 写回答

2条回答 默认 最新

  • IT论之程序员 2023-06-03 14:50
    关注

    这是因为 WPF 和 WinForms 是两个不同的UI框架,它们对控件状态的管理方式不同造成的。
    在 WinForms 中,当焦点离开一个控件时,它的内容会被保存。而在 WPF 中,当焦点离开一个控件时,它的内容会被清空。
    所以在你的代码中,当 PropertyGrid 控件获取焦点时,文本框中的内容被清空。这是 WPF 的默认行为。
    要解决这个问题,你有两种方法:

    1. 在文本框失去焦点时手动保存其内容。例如:
      xml csharp private void TextBox_LostFocus(object sender, RoutedEventArgs e) { TextBox textBox = sender as TextBox; textBox.Tag = textBox.Text; } 然后在文本框重新获取焦点时,从 Tag 属性中恢复内容: xml csharp private void TextBox_GotFocus(object sender, RoutedEventArgs e) { TextBox textBox = sender as TextBox; textBox.Text = textBox.Tag as string; }
    2. 禁用 WPF 的默认行为,使文本框中的内容在失去焦点时不清空。可以这样设置:
      xml
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月13日
  • 已采纳回答 6月5日
  • 创建了问题 6月1日

悬赏问题

  • ¥15 mac系统控制台运行npm run serve没问题但是配置文件不识别serve脚本
  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴
  • ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
  • ¥50 爬虫预算充足,跪巨佬