【问题标题】:Dynamically showing a text box created in another class, on a win form in C#在 C# 的 win 表单上动态显示在另一个类中创建的文本框
【发布时间】:2017-08-03 00:25:47
【问题描述】:

我的意图是在 Form1 中创建一个动态文本框。我有一个“Form1”类和一个“SplBox”类。我已经在类“SplBox”中声明了一个动态文本框并传递了一个字符串给它。我想要的只是在“Form1”类中调用这个动态文本框并在 Form1 主窗体中显示它。在我上面的代码中,打开了一个新表单,然后在这个新表单中显示了动态文本框 - 我不想要

namespace TxtClassRun
{
    public partial class Form1 : Form
    {
        SplBox s1 = new SplBox();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // show the dynamic text box in Form1 
            s1.settxtbox();
            s1.Show(); // opening another window. I want it to be in "Form1"           
        }
    }

    //New Class
    public partial class SplBox : Form
    {
        //Global declarations 
        TextBox t2 = new TextBox();

        public void settxtbox()
        {
            t2.Text = "Hello World";
            Controls.Add(t2);
        }
    }
}

【问题讨论】:

  • 您需要设置大小、位置等属性。这是一个帮助您入门的链接:support.microsoft.com/en-us/help/319266/…
  • 不清楚你在问什么。 SplBox 类是FORM 类,因此当在Form1 中单击按钮时将简单地显示一个新表单。你想简单地将TextBox 添加到Form1 还是将新的Form2 保留在Form1 中?
  • 为什么要在一个窗体上创建控件却想在另一个窗体上显示呢?对我来说没有意义。
  • 嗨 JohnG,我的意图是在 Form1 中创建一个动态文本框。我有一个“Form1”类和一个“SplBox”类。我已经在类“SplBox”中声明了一个动态文本框并将一个字符串传递给它。我想要的只是在“Form1”类中调用这个动态文本框并在 Form1 主窗体中显示它。在我上面的代码中,打开了一个新表单,然后在这个新表单中显示了动态文本框——这是我不想要的。提前致谢。

标签: c# winforms dynamic textbox


【解决方案1】:

试试这个,

public partial class SplBox : Form
{
     //Global declarations 
     TextBox t2 = new TextBox();
     private Form TempOwnerForm;
     public SplBox(Form TempOwnerForm) {
         this.TempOwnerForm = TempOwnerForm;
     }
     public Form OwnerForm { get { return TempOwnerForm; } set { this.TempOwnerForm = value; } }

     public void settxtbox()
     {  
         t2.Text = "Hello World";
         TempOwnerForm.Controls.Add(t2);
     }
}

希望有帮助,

【讨论】:

  • 您好,谢谢您的回复。但是它正在报告错误。 “没有给出与 'SplBox.SplBox(Form)' 的所需形式参数 'TempOwnerForm' 相对应的参数”。是不是我做错了什么?
  • 这样调用; SplBox frm = new SplBox(this); @Bobx
  • 当我在“public partial class Form1 : Form”中调用 SplBox frm= new SplBox(this) 时,它仍然显示错误“keyword this not available in current context”;@Berkey
  • 用该错误更新您的问题,请也输入您的代码。 @Bobx
  • 我的意图是在Form1中创建一个动态文本框。我有一个“Form1”类和一个“SplBox”类。我已经在类“SplBox”中声明了一个动态文本框并将一个字符串传递给它。我想要的只是在“Form1”类中调用这个动态文本框并在 Form1 主窗体中显示它。在我上面的代码中,打开了一个新表单,然后在这个新表单中显示了动态文本框-我不想要。@Berkay
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 2014-03-21
  • 1970-01-01
  • 2020-07-13
  • 2023-03-09
  • 1970-01-01
  • 2013-04-19
相关资源
最近更新 更多