无法在窗体中从类到文本框输入文本。 我们在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";
}
}
}
答案 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];