- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 TextBox
(多行),如果我按 Ctrl+Enter
,它只会换行。但我也想在 Shift+Enter
上执行此操作。我试过:
messageTextBox_KeyDown(null, new KeyEventArgs(Keys.Control | Keys.Enter));
但这行不通。
我认为我可以做到:
int lastSelectionStart = messageTextBox.SelectionStart;
messageTextBox.Text = messageTextBox.Text.Insert(messageTextBox.SelectionStart, Environment.NewLine);
messageTextBox.SelectionStart = lastSelectionStart;
但我不喜欢这样。
我怎样才能使 Shift+Enter 与 Ctrl+Enter 相同?
我当前的代码:
按键按下事件
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
if (e.Shift)
{
}
else if (!e.Control)
{
sendButton_Click(null, null);
}
}
在按键事件中:
if (e.KeyChar == (char)13)
{
e.Handled = true;
return;
}
这是因为我想单独使用 Enter 键作为发送按钮。
最佳答案
在我看来,您遇到的真正问题是表单的 AcceptButton 属性。您无法使用 KeyDown 事件处理程序解决此问题,击键在到达事件之前被处理。
这可以通过覆盖表单的 ProcessCmdKey() 方法来解决,但最干净的方法是创建您自己的 TextBox 派生控件。您可以覆盖它的 IsInputKey() 方法来告诉 Winforms 您想要查看 Ctrl+Enter 键。向您的项目添加一个新类并粘贴如下所示的代码。编译。从工具箱顶部放下新控件。请注意如何根据您的方便更改类,使其更适合作为聊天输入框。
使用系统;使用 System.Windows.Forms;
class ChatBox : TextBox {
public ChatBox() {
this.Multiline = true;
}
protected override bool IsInputKey(Keys keyData) {
if (keyData == (Keys.Shift | Keys.Enter)) return true;
return base.IsInputKey(keyData);
}
protected override void OnKeyDown(KeyEventArgs e) {
if (e.KeyData == (Keys.Shift | Keys.Enter)) {
int pos = this.SelectionStart;
this.SelectedText = Environment.NewLine;
this.SelectionStart = pos;
e.Handled = e.SuppressKeyPress = true;
return;
}
base.OnKeyDown(e);
}
}
关于C# TextBox NewLine 在 KeyDownEvent 上模拟 Ctrl+Enter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12553473/
这是我在编程教程中发现的一个术语。什么意思? 最佳答案 它通常指的是解析文本行之类的东西,它描述了从行尾删除的换行符或回车符。 换行符 对最终用户来说通常是不可见的,但它代表了一个结束一行并开始新一行
我有一个简单的客户端-服务器应用程序。服务器使用 Java,客户端使用 Python3。服务器等待单个客户端,然后通过以下方式与它永久通信。服务器从客户端读取一行,然后发送回消息“yyyy”。因此,从
我在 .NET 中有一个字符串定义如下: var str = @"line 1 line 2 line 3"; 我想用 Linux 等效项替换 Windows 换行符。 (将 \r\n 替换为 \n)
我有一段文本需要用 python 解析。 这是一个字符串,我想将它拆分成一个行列表,但是,如果换行符 (\n) 在引号内,那么我们应该忽略它。 例如: abcd efgh ijk\n1234 567"
在 Antd 中有一种方法可以将表格单元格中的文本显示为多行。 我试着把 ,\n,\r 进入文本。 有没有人已经找到办法做到这一点? 最佳答案 最后这是我的解决方案。 当需要换行时,每列的文本都包含
我最近一直在学习Slim,我想知道是否有一种方法可以格式化或美化我的代码。我一直在警惕使用换行符(按Enter),因为它会导致错误。 我之所以要设置其格式,是因为我的大多数代码都无法适合我的文本编辑器
如果我要在换行面板中插入元素,但在下一行溢出之前面板中仍然有空间,我是否可以专门对其进行换行,以使后续元素在下一行中? 我正在寻找这样的东西: 最佳答案 这有效
我有一个文本文件,其中包含以下文本: ['22APR2012 23:10', '23APR2012 07:10', 1, 3, 0], ['22APR2012 23:10', '23APR2012 0
我可以期望文本框中的换行符成为常见的换行符约定之一吗?还是取决于用户的操作系统? 即:CR 或 CR+LF 或 LF 最佳答案 HTML 4.01 specification指出换行符表示为 CR L
以下控制字符的含义是什么: 回车 换行 换页 最佳答案 回车表示不向下前进,返回到当前行的行首。这个名字来源于打印机的托架,因为在创造这个名字时显示器还很少见。这通常被转义为“\r”,缩写为 CR,并
以下控制字符的含义是什么: 回车 换行 换页 最佳答案 回车 表示返回到当前行的开头而不向下前进。这个名字来自打印机的马车,因为在创造这个名字时显示器很少见。这通常被转义为 \r , 缩写 CR ,并
在使用 vim 时,当我以//开始注释时,在我输入一个空格后,它会立即开始一个新的注释行。 例如,如果我输入以下内容: //hello world my name is stefan 我会得到: //
保证,我的最后一个正则表达式问题。 ..真的。 当我不应该在某些比赛中加入换行符时,我不知何故,我确信这是我误解的东西,或者,我得到的数据不是我所期望的。 (这是可能的..!) 我定义了一个正则表达式
我有一个带有 Windows 样式行终止符 (\r\n) 的文本文件,我以通用换行符模式 (Python 2.7) 打开该文件。我希望在第一次调用 readline() 方法后设置 newlines
以下控制字符的含义是什么: 回车 换行 换页 最佳答案 回车表示不向下前进,返回到当前行的行首。这个名字来源于打印机的托架,因为在创造这个名字时显示器还很少见。这通常被转义为“\r”,缩写为 CR,并
我有一个小的 Bash 脚本,它获取一个目录的所有 Markdown 文件,并将它们合并成一个,如下所示: for f in *.md; do (cat "${f}";) >> output.md;
在使用 Makefile 编译一些代码后,我在尝试运行它时得到了这个: $ ./libbookgui.a ./libbookgui.a: line 1: syntax error near unexp
我在 Mac OS X Mavericks 上的 PHP 5.4.17 上使用 mail 时遇到了一些奇怪的行为。当我发送这样一封简单的电子邮件时: mail("me@example.com", "T
我正在尝试关注 this answer ,这建议运行此命令: sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostnam
我使用 Notepad++,我需要删除所有以“abc”开头的行。 注意,我不需要用空行替换以“abc”开头的行,但我需要完全删除这些行。 我如何继续(我想使用正则表达式)? 最佳答案 尝试更换 ^ab
我是一名优秀的程序员,十分优秀!