首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# WinForms ToolStripTextBox大小调整和键压检测

C# WinForms ToolStripTextBox大小调整和键压检测
EN

Stack Overflow用户
提问于 2020-04-28 19:56:15
回答 1查看 201关注 0票数 0

我有一个非常简单的C# WinForm示例:

代码语言:javascript
运行
复制
private System.Windows.Forms.ContextMenuStrip ct1;

var header = new ToolStripMenuItem("Header with long test like Lorem Ipsum");
header.Enabled = false;

var txt = new ToolStripTextBox();
txt.Text = "changeme";

ct1.Items.Clear();
ct1.Items.Add(header);
ct1.Items.Add(txt);

ct1.Show(x,y);

现在我有两个问题:

  1. 如何要求文本框填充菜单的全部宽度(即与最大项一样大)?

  1. 如果我按Alt键,菜单就会关闭。我可以通过处理Closing事件:

来防止它。

如下所示:

代码语言:javascript
运行
复制
private void ct1_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
    e.Cancel = (e.CloseReason == ToolStripDropDownCloseReason.Keyboard);
}

但是,我希望能够通过按Escape来关闭,我也希望能够使用Alt键作为输入。

但现在Alt和Escape都是要么要么一无所有。我该如何区分它们呢?

甚至在KeyDown事件上也为TextBox和ct1尝试过,但是Alt键没有被转发到那里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-28 21:46:29

关于你的第一个问题

虽然可能需要进行一些调整,但这将允许您将文本框的宽度设置到一个很好的程度:

首先,给文本框一个名称并附加到这些事件处理程序。这是必需的,因为上下文菜单的宽度在显示之前是不确定的。

代码语言:javascript
运行
复制
txt.Name = "changeNameTextBox";
ct1.Opening += ct1_Opening;
ct1.Closed += ct1_Closed;

然后实现这些事件处理程序:

代码语言:javascript
运行
复制
void ct1_Opening(object sender, EventArgs e)
{
    ToolStripTextBox txt = ct1.Items.Find("changeNameTextBox", false)[0] as ToolStripTextBox;
    txt.Size = new Size(ct1.Width - 50, txt.Height);
}

void ct1_Closed(object sender, ToolStripDropDownClosedEventArgs e)
{
    ToolStripTextBox txt = ct1.Items.Find("changeNameTextBox", false)[0] as ToolStripTextBox;
    txt.Size = new Size(0, 25);
}

至于你的第二个问题,你几乎成功了。

拥有该onClosing事件,并按以下方式修改它的主体:

代码语言:javascript
运行
复制
void ct1_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
    e.Cancel =
        e.CloseReason == ToolStripDropDownCloseReason.Keyboard
        && 
        Control.ModifierKeys.HasFlag(Keys.Alt); 
}

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61488883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档