我根據用戶的需要創建盡可能多的動態標簽。
for (int j = 0; j < Nitelik_Counter; j )
{
Label labeltest= new Label();
labeltest.Text = "N - " j.ToString();
labeltest.TextAlign = ContentAlignment.MiddleCenter;
labeltest.Location = new Point(10 j * 70, 10);
}
我將它們的文本確定"N i.toString()"為默認值。之后,我將其添加到表單中。我想做的是當表單打開并且用戶雙擊其中一個標簽時,將像在 Windows 作業系統中一樣打開重命名功能,并且當用戶按下回車鍵時,它必須保存。我怎么做?
uj5u.com熱心網友回復:
創建標簽時,請像這樣設定 DoubleClick 處理程式:
// ...
Label labeltest= new Label();
labeltest.DoubleClick = Label_DoubleClick;
在處理程式中,您可以將臨時文本框添加到表單中,將其放置在原始標簽上,等到用戶按 Enter 或 Escape 然后更改或不更改原始文本并洗掉文本框,如下所示:
protected void Label_DoubleClick(object? sender, EventArgs e)
{
if (sender is Label label)
{
var box = new TextBox();
box.Name = "TextField";
box.Text = label.Text;
box.TextAlign = HorizontalAlignment.Center;
box.AutoSize = false;
box.Dock = DockStyle.None;
box.Size = label.Size;
box.Location = this.PointToClient(label.Parent.PointToScreen(label.Location));
box.BackColor = BackColor;
box.PreviewKeyDown = (a, b) => {
if (b.KeyCode == Keys.Escape)
{
box.Parent.Controls.Remove(box);
}
else if (b.KeyCode == Keys.Enter)
{
label.Text = box.Text;
box.Parent.Controls.Remove(box);
}
};
box.LostFocus = (a, b) => { box.Parent?.Controls.Remove(box); };
Controls.Add(box);
Controls.SetChildIndex(box, 0);
box.SelectAll();
box.Focus();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/506803.html
