c# - 如何更改 groupBox.Text?
问题描述
如何将 groupBox.Text 更改为选择工具条菜单项的值/文本...如何检查用户单击了哪个以及如何获取菜单项的“.text”以将其传输到groupBox.text 的变量或权限。
现在我一直在使用“点击”事件并手动设置它,但我确定有一种方法可以自动执行此操作。 .我只是找不到它。
我将第一个设置为默认...
-
this.meusDadosToolStripMenuItem.Select(); groupBox1.Text = meusDadosToolStripMenuItem.Text;//definir o nome da groupbox por default } private void horárioToolStripMenuItem_Click(object sender, EventArgs e) { groupBox1.Text = horárioToolStripMenuItem.Text; } private void vencimentosToolStripMenuItem_Click(object sender, EventArgs e) { groupBox1.Text = vencimentosToolStripMenuItem.Text; } private void meusDadosToolStripMenuItem_Click(object sender, EventArgs e) { groupBox1.Text = meusDadosToolStripMenuItem.Text; }*
解决方案
如果这只是 1 级菜单,您可以使用ItemClicked
如下事件:
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
Console.WriteLine(e.ClickedItem.Text);
}
您还可以像这样遍历菜单项:
foreach (ToolStripMenuItem tsi in menuStrip1.Items)
{
tsi.Click += (sender, args) =>
{
var currentMenuItem = (ToolStripMenuItem) sender;
Console.WriteLine(currentMenuItem.Text);
};
}
同样,这仅适用于第一级。如果你想通过所有级别,那么你将需要递归。在这里您可以查看以下示例menuStrip1
:
public Form1()
{
InitializeComponent();
foreach (ToolStripMenuItem tsi in menuStrip1.Items)
{
IterateMenu(tsi);
}
}
private void IterateMenu(ToolStripMenuItem currentMenuItem)
{
Console.WriteLine($"Assigning {currentMenuItem.Text}");
currentMenuItem.Click += ClickEvent;
if (currentMenuItem.HasDropDownItems)
{
foreach (ToolStripMenuItem tsi in currentMenuItem.DropDownItems)
{
IterateMenu(tsi);
}
}
}
private void ClickEvent(object sender, EventArgs args)
{
var currentMenuItem = (ToolStripMenuItem)sender;
Console.WriteLine(currentMenuItem.Text);
}
为了满足您的要求,请更改Console.WriteLine(currentMenuItem.Text);
为groupBox1.Text = currentMenuItem.Text;
.
groupbox.Text
编辑:这是在菜单项有子项时不会改变的版本:
public Form1()
{
InitializeComponent();
foreach (ToolStripMenuItem tsi in menuStrip1.Items)
{
IterateMenu(tsi);
}
}
private void IterateMenu(ToolStripMenuItem currentMenuItem)
{
if (currentMenuItem.HasDropDownItems)
{
foreach (ToolStripMenuItem tsi in currentMenuItem.DropDownItems)
{
IterateMenu(tsi);
}
}
else
{
currentMenuItem.Click += ClickEvent;
}
}
private void ClickEvent(object sender, EventArgs args)
{
var currentMenuItem = (ToolStripMenuItem)sender;
Console.WriteLine(currentMenuItem.Text);
}
推荐阅读
- c# - 如何获取 xaml 的内容
在 .cs 中? - asp.net-core - 如何在 IIS 上部署 beta 版本?
- python - 如何遍历 Python 列表及其列表元素,在每个元素中拆分字符串并写出新列表
- python - 带有 2 个定义相同方法的 Mixin 的 CBV - 如何让每个 Mixin 执行自己的代码?
- html - 将“https:”附加到以 src=// 开头的汤中的链接
- php - Cakephp 3 - 使用文件上传将大型 CSV 导入数据库 错误 503 服务不可用
- reactjs - React Native App 总是在登录屏幕上打开
- flutter - 在 Flutter 中的 FocusedBorder 上 TextFormFeild 的 LabelText 无法正确显示
- c# - 如何使用 MemoryStream 将数据从一种形式发送到另一种形式
- java - 如何从android textview(多行)中删除一个单词而不影响其他单词的对齐/位置