开发者

Not able to add a System.Windows.Controls.TextBox to groupbox controls in C#

Is there any way to add a System.Windows.Controls.TextBox to GroupBox controls 开发者_Go百科in C#?

I tried the following but it doesn't show up in the groupbox:

 public System.Windows.Controls.TextBox textBox6 = new System.Windows.Controls.TextBox();
 public System.Windows.Controls.TextBox textBox7 = new System.Windows.Controls.TextBox();
 public ElementHost sumtext = new ElementHost();
 public ElementHost loctext = new ElementHost();

 private void Form1_Load(object sender, EventArgs e)
    {
        textBox6.Name = "Summary";
        textBox7.Name = "Location";

        textBox6.FontFamily = new System.Windows.Media.FontFamily("Microsoft Sans Serif");
        textBox6.FontSize = 12;
        textBox6.SpellCheck.IsEnabled = true;

        textBox7.FontFamily = new System.Windows.Media.FontFamily("Microsoft Sans Serif");
        textBox7.FontSize = 12;
        textBox7.SpellCheck.IsEnabled = true;

        groupBox4.Controls.Add(sumtext);
        sumtext.Dock = DockStyle.None;
        sumtext.Width = 246;
        sumtext.Height = 35;
        sumtext.Child = textBox6;
        sumtext.Location = new Point(3, 33);
        sumtext.Visible = true;
        sumtext.Enabled = false;
        groupBox4.Controls.Add(sumtext);

        groupBox4.Controls.Add(loctext);
        loctext.Dock = DockStyle.None;
        loctext.Width = 246;
        loctext.Height = 35;
        loctext.Child = textBox7;
        loctext.Location = new Point(3, 90);
        loctext.Visible = true;
        loctext.Enabled = false;

        this.Controls.Add(sumtext);
        this.Controls.Add(loctext);
    }

I need to use System.Windows.Controls.TextBox rather than Form.TextBox as I need it for spell check.

Any help would be greatly appreciated!


I changed the Enabled property of the sumtext, and removed the other box to shorten it: This code works for me:

    public Form1()
    {
        this.Load += new System.EventHandler(this.Form1_Load);
    }

    public System.Windows.Controls.TextBox textBox6 = new System.Windows.Controls.TextBox();
    public ElementHost sumtext = new ElementHost();
    private System.Windows.Forms.GroupBox groupBox4;

    private void Form1_Load(object sender, EventArgs e)
    {
        this.groupBox4 = new System.Windows.Forms.GroupBox();
        this.SuspendLayout();
        // 
        // groupBox4
        // 
        this.groupBox4.Location = new System.Drawing.Point(57, 63);
        this.groupBox4.Name = "groupBox4";
        this.groupBox4.Size = new System.Drawing.Size(591, 238);
        this.groupBox4.TabIndex = 0;
        this.groupBox4.TabStop = false;
        this.groupBox4.Text = "groupBox1";
        // 
        // Form1
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(706, 478);
        this.Controls.Add(this.groupBox4);
        this.Name = "Form1";
        this.Text = "Form1";
        this.ResumeLayout(false);
        textBox6.Name = "Summary";

        textBox6.FontFamily = new System.Windows.Media.FontFamily("Microsoft Sans Serif");
        textBox6.FontSize = 12;
        textBox6.SpellCheck.IsEnabled = true;

        groupBox4.Controls.Add(sumtext);
        sumtext.Dock = DockStyle.None;
        sumtext.Width = 246;
        sumtext.Height = 35;
        sumtext.Child = textBox6;
        sumtext.Location = new Point(3, 33);
        sumtext.Visible = true;
        sumtext.Enabled = true;
        groupBox4.Controls.Add(sumtext);
    }


Is this code actually getting called? Has groupbox 4 been added to the form yet?


You should not be adding your ElementHost controls to your Form AND your GroupBox, it appears to be confusing .NET. Keeping your original code exactly as-is but commenting out these two lines makes it work:

    //this.Controls.Add(sumtext);
    //this.Controls.Add(loctext);

Also... I don't think it's hurting anything, but you don't need to do this twice:

    //groupBox4.Controls.Add(sumtext);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜