无法在表格中从类到文本框输入文本

时间:2019-06-12 07:18:11

标签: c# winforms

无法在窗体中从类到文本框输入文本。 我们在MyTreeView类中设置了一个按键事件。 文本框不能包含字符。 我该怎么办?

*一组textBox1。 *将textBox1属性的修饰符从私有更改为公共 *将按键事件从私人更改为公开 *(效果不好,所以我现在将其保密。)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;


namespace treeview
{

    public partial class Form1 : System.Windows.Forms.Form
    {

        MyTreeView m_tree_view = new MyTreeView();

        public Form1()
        {
            try
            {
                InitializeComponent();

                System.Windows.Forms.TreeNode[] tree1 = new System.Windows.Forms.TreeNode[2];

                m_tree_view.Location = new System.Drawing.Point(0, 0);
                m_tree_view.Size = ClientSize;
                m_tree_view.AllowDrop = true;

                tree1[0] = new System.Windows.Forms.TreeNode("TreeNode1");
                tree1[1] = new System.Windows.Forms.TreeNode("TreeNode2");

                m_tree_view.Nodes.Add("Node1");


                Controls.Add(m_tree_view);
            }
            catch
            {
            }
        }

        //This is the code I added.
        private void Form1_Load(object sender, EventArgs e)
        {

        }


    }


    public class MyTreeView : System.Windows.Forms.TreeView
    {

        public MyTreeView()
        {
            try
            {
                //This is the code I added.
                KeyPress += MyTreeView_KeyPress;
            }
            catch
            {
            }
        }

        //This is the code I added.
        private void MyTreeView_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            Console.WriteLine("key_press_ok");

            //error code↓
            //textBox1.Text = "sample";
        }



    }
}

2 个答案:

答案 0 :(得分:0)

如果您只想单击一个按钮然后打印一些文字,我不明白您为什么要再上一堂课。 可以使您的代码高效而又不复杂。 在主要班级

private void SendText_Click(object sender, EventArgs e)
    {
        textBox1.Text = "hi";
    }

但是,如果您想使其复杂并创建一个类,则应返回i变量并将其发送给另一个类,您可以使用它。 首先了解如何使用公共和私有,然后再使用它们。 您应该有一个公共类,用于发送数据,而私有类则用于接收和处理。

答案 1 :(得分:0)

将(异常例外)添加到您的try catch中。

这样做:

try
{
    // your code
}
catch (Exception ex)
{
    MessageBox.Show(ex, "Error in (add where the error is)");
    Console.WriteLine(ex);
}

因此,您将获得详细的异常消息,它可能会对您有所帮助,或者您可以将其张贴在此处,以便我们了解问题所在。

并且因为您的“使用指令”中包含System.Windows.Forms

using System.Windows.Forms;

如此

System.Windows.Forms.TreeNode[] tree1 = new System.Windows.Forms.TreeNode[2];

是多余的,可以缩短为:

TreeNode[] tree1 = new TreeNode[2];