【问题标题】:c# application with on-screen keyboardc# 带有屏幕键盘的应用程序
【发布时间】:2013-10-26 22:11:18
【问题描述】:

我正在用 c# 制作一个 Windows 窗体应用程序,并为这个应用程序创建屏幕键盘,但我遇到了一些问题,因为我不知道如何做一些事情。

我有什么

  • Form1 的文本框和富文本框很少。
  • panel1 带有丰富的文本框和 5 个按钮(A、B、C、DEL、ENTER)。

我想要什么?

  • 每次我点击任何文本框或任何丰富文本框时,我都希望 panel1 显示出来。
  • 我希望我单击的文本框中的文本显示在 panel1 上的富文本框中。
  • 当我单击 panel1 上的“ENTER”按钮时,我希望将 panel1 上的 Richtextbox 中的文本传输到我之前单击过的文本框。 (当然 panel1 会在那之后隐藏)。

当我点击文本框或richtextbox(我使用了“Enter”事件)时,我已经让panel1显示出来,当我点击它上的“ENTER”按钮时,panel1将隐藏。每次我点击文本框或富文本框时是否有任何其他方式显示 panel1 而无需为每个文本框编码“Enter”事件?

现在最困难的部分是将文本从表单传输到面板,反之亦然。要从单击的文本框中传输文本,我只是在“Enter”事件中添加了一行代码:

textBox1.Text = RichTextBox1.Text;

将文本从richtextbox1 传输回文本框是我的主要问题...我有解决方案,但我正在寻找一个正确且简单的解决方案...我的解决方案太笨拙和复杂...

将在这里解释我在寻找什么: 例如,如果 int 可以记住数字,而 string 可以记住文本。我想要一些可以记住我上次点击的文本框的东西。我希望你能明白我的意思。

我的英语不是我的主要语言,所以如果你不能理解任何东西,请回复,我会尽力解释。

感谢大家的宝贵时间。

【问题讨论】:

  • 我认为您要的是一种通用的方法 textBox1.Text = richTextBox1.Text,(没有硬编码),对吧?

标签: c#


【解决方案1】:

我会这样做:

  1. 创建一个派生自文本框(如果您将仅使用文本框)或从控件派生的基本用户控件(如果使用的文本框多于使用的文本框)。

  2. 像现在在该基类中一样处理“Enter”事件。

  3. 创建将从 EventArgs 类派生并存储您控件的值的类。我们暂时称它为“TextboxArgs”。

  4. 在基本用户控件中,创建一个事件并在您拥有的“Enter”处理程序中引发它,并使用“TextboxArgs”类表单步骤 3 将文本作为事件参数传递。

  5. 在您的面板中订阅此事件,以便它做出正确反应。

现在,只需为每个文本框使用这个基本用户控件,它就会引发一个事件并将其值作为参数传递。面板将对此作出回应。如果你这样做,那么无论你添加多少文本框,你都不需要任何额外的编码。

【讨论】:

  • “基本用户控制”你能给我举个例子吗?或者你能在一个简单的测试项目中做到这一点并告诉我吗?因为我以前从未使用过基本用户控制...老实说我完全迷路了。
猜你喜欢
  • 1970-01-01
  • 2019-12-01
  • 2014-03-04
  • 2014-06-25
  • 1970-01-01
  • 2018-11-03
  • 2021-07-27
  • 1970-01-01
  • 2017-09-03
相关资源
最近更新 更多