Невозможно ввести текст из класса в текстовое поле в форме - PullRequest
0 голосов
/ 12 июня 2019

Невозможно ввести текст из класса в текстовое поле в форме. Мы устанавливаем событие нажатия клавиши в классе 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 голосов
/ 12 июня 2019

добавьте (Exception ex) к вашей попытке поймать.

так же:

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];
0 голосов
/ 12 июня 2019

Если вы хотите просто нажать кнопку, а затем напечатать текст, я не понимаю, почему вы делаете другой класс.Будет хорошо, если ваш код будет эффективным и не сложным.В основном классе

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

Но если вы хотите усложнить и создать класс, вы должны вернуть переменную i и отправить ее другому классу, вы можете использовать ее.Узнайте, как использовать Public и Private сначала, а затем использовать их.У вас должен быть публичный класс, который отправляет данные и приватный класс для получения и обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...