winforms 在表单上重新定位元素

h4cxqtbf  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(188)

我正在构建待办事项列表应用程序,并试图创建一个“添加新任务”按钮。
我想在单击按钮时创建一个新的任务(文本框),并将按钮移动到添加的文本框下面。因此,我尝试创建多个面板,当单击按钮时,将“新任务”按钮移动到第二个面板,并将创建的新文本框添加到第一个面板。之后,如果用户想删除该任务(文本框),则根据此重新定位按钮和任务。
有人能帮我吗?
`

private void btnNewTask_Click(object sender, EventArgs e)
        {
            // Creating new Textbox
            TextBox txtTask = new TextBox();

            btnNewTask.Location = new Point(panel2);

            // txtTask parameter
            txtTask.BorderStyle = BorderStyle.None;
            txtTask.ReadOnly = false;
            txtTask.PlaceholderText = "Input a new Task.";
            txtTask.Location = new Point(panel1);

            //Adding txtTask.
            this.Controls.Add(txtTask);
        }

`

0dxa2lsx

0dxa2lsx1#

我创建了解决方案。我删除了面板,并在表单上留下了btnNewTask
点击按钮时,我需要创建txtTask位置并将其设置为btnNewTask位置,并更改btnNewTask的Y位置以将其移动到下面。之后,检查是否有任何其他控件的Y位置与txtTask相同或更少,如果有,也将其Y位置添加35。
这是我的新代码:
整数c = 0;

private void btnNewTask_Click(object sender, EventArgs e)
    {

        // Creating new Textbox
        TextBox txtTask = new TextBox();

        // txtTask parameter

        Font font = new Font("Segoe UI", 10.0f);

        txtTask.Name = "txtTask" + ++c;
        txtTask.BorderStyle = BorderStyle.None;
        txtTask.ReadOnly = false;
        txtTask.PlaceholderText = "Input a new Task.";
        txtTask.Size = new Size(817, 31);
        txtTask.Font = font;
        txtTask.Location = new Point(btnNewTask.Location.X , btnNewTask.Location.Y); // txtTask will get the "btnNewTask" Location

        btnNewTask.Location = new Point(txtTask.Location.X , btnNewTask.Location.Y + 35); // That should add 35 to the Y location  

        foreach (Control item in this.Controls)
        {
            if (item.Location.Y >= txtTask.Location.Y)
            { // if there is an item that has greater Y location
                item.Location = new Point(item.Location.X, txtTask.Location.Y + 35); // It should increase its value as 35 too.
            }
            this.Controls.Add(txtTask);

        }

这里有一个例子:

感谢您的帮助和想法!

相关问题