0

我发表了一篇关于在文本框中检测粘贴事件的帖子,并被定向到带有执行此操作的代码的某个地方。我让它工作了,但它要求我从 Program.cs 主事件创建自己的文本框控件。这是代码:

    var txtNum = new MyTextBox();
    txtNum.Pasted += (sender, args) => MessageBox.Show("Pasted: " + args.ClipboardText);
    txtNum.Size = new System.Drawing.Size(578, 20);
    txtNum.Location = new System.Drawing.Point(12, 30);
    var form = new Form1();
    form.Controls.Add(txtNum);
    Application.Run(form);

现在的新问题是,当我尝试处理 txtNum 中的任何内容时,我收到“对象引用未设置为对象的实例”我该如何解决这个问题?这是一个winforms应用程序.net 4.0

错误在这里:

    private void button1_Click(object sender, EventArgs e)
    {
        string s = txtNum.Text; //OBJECT REFERENCE ERROR

            string[] numbers = s.Split(' ');
            double sum = 0;
            for (int i = 0; i < numbers.Length; i++)
            {
                double num = double.Parse(numbers[i]);
                sum += num;
            }
            lblRESULT.Text = sum.ToString();
            if (cp == true)
            {
                Clipboard.SetText(lblRESULT.Text);
            }

    }
4

2 回答 2

2

这是因为您已在Main().

static TextBox txtNum = new TextBox();
[STAThread]
static void Main()
{
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
// txtNum.Paste += (sender, args) => MessageBox.Show("Pasted: " + args.ClipboardText);
txtNum.Size = new System.Drawing.Size(578, 20);
txtNum.Location = new System.Drawing.Point(12, 30);
Form1 form = new Form1();
form.Controls.Add(txtNum);
Application.Run(form);
}

更好的方法是在 Form1s 构造函数或Form_Load事件中添加文本框。

TextBox txtNum = new TextBox();
public Form1()
{
InitializeComponent();
txtNum.Size = new System.Drawing.Size(578, 20);
txtNum.Location = new System.Drawing.Point(12, 30);
txtNum.PreviewKeyDown += (sender, e) =>
{
    if (e.KeyValue == 17 && e.Control == true)
    {
        MessageBox.Show("you pasted:" + Clipboard.GetText());
    }
};
this.Controls.Add(txtNum);

}
于 2012-11-16T00:23:36.973 回答
0

好的,在 Main 中声明文本框的代码只是一个示例。根据 Jeremy 的回答,您应该在表单代码中声明文本框。

或者,您应该能够MyTextBox在工具箱中找到您的控件 - 只需像任何控件一样将其拖到表单上,然后Pasted像往常一样添加事件处理程序代码。

于 2012-11-16T00:52:26.147 回答