【问题标题】:Cannot enter text from class to textbox in form无法在表单中将文本从类输入到文本框
【发布时间】:2019-06-12 07:18:11
【问题描述】:

无法将文本从类输入到表单中的文本框。 我们在 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";
        }



    }
}

【问题讨论】:

  • 这是不是 C 代码。

标签: c# winforms


【解决方案1】:

如果您只想单击一个按钮然后打印一些文本,我不明白您为什么要制作另一个课程。 可以使您的代码高效且不复杂。 在主类中

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

但是如果你想让它变得复杂并创建一个类,你应该返回 i 变量并将它发送到另一个类,你可以使用它。 先了解如何使用 Public 和 Private,然后再使用它们。 您应该有一个发送数据的公共类和一个接收和处理的私有类。

【讨论】:

    【解决方案2】:

    将 (Exception ex) 添加到您的 try catch。

    这样做:

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

    所以你会得到一个详细的异常消息,也许它对你有帮助,或者你会在这里发布它,这样我们就可以看到问题所在。

    因为您的 Using 指令中有 System.Windows.Forms

    using System.Windows.Forms;
    

    所以

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

    是多余的,可以缩短为:

    TreeNode[] tree1 = new TreeNode[2];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 2016-06-20
      • 2020-03-12
      相关资源
      最近更新 更多