C# 是否将条目添加到其他类中的文本框?

C# 是否将条目添加到其他类中的文本框?,c#,winforms,class,C#,Winforms,Class,我有一个表单,在这个表单中,我可以从一个窗口输入数据,然后按enter按钮(BTENTER)并单击display(btnShowBooks)按钮,然后在另一个窗口中显示数据。当我用下面的代码按BTENTER,然后单击BTN工作簿以在新窗口中显示输入时,txtBookList文本框仍然为空。下面是一个不起作用的简化代码,希望能得到一些提示 簿记表格文件 private void btnEnter_Click(object sender, EventArgs e) { BookList bo

我有一个表单,在这个表单中,我可以从一个窗口输入数据,然后按enter按钮(BTENTER)并单击display(btnShowBooks)按钮,然后在另一个窗口中显示数据。当我用下面的代码按BTENTER,然后单击BTN工作簿以在新窗口中显示输入时,txtBookList文本框仍然为空。下面是一个不起作用的简化代码,希望能得到一些提示

簿记表格文件

private void btnEnter_Click(object sender, EventArgs e)
{
    BookList bookList = new BookList();
    bookList.txtBookList.Text = "aaa";
}
图书列表表单文件,其中我有布局和关闭按钮,因此没有任何相关代码。只有名为txtBookList和btnClose按钮的texbox

在BookList designer文件中,我已将该字段公开:

public System.Windows.Forms.TextBox txtBookList;
问候。帮手

--解决--


您正在创建一个新的图书列表,然后在该方法返回时立即将其丢失。您是否正在尝试访问BookEntry表单中的BookList对象?它应该看起来更像:

private void btnEnter_Click(object sender, EventArgs e)
{
    // bookListForm is the ID of the form in the designer 
    bookListForm.txtBookList.Text="aaa";
}

您正在创建一个新的图书列表,然后在该方法返回时立即将其丢失。您是否正在尝试访问BookEntry表单中的BookList对象?它应该看起来更像:

private void btnEnter_Click(object sender, EventArgs e)
{
    // bookListForm is the ID of the form in the designer 
    bookListForm.txtBookList.Text="aaa";
}

我刚刚复制了这个,它工作得很好(VS2010.NET4)。。之后是否显示表单的相同实例?(详情如下):

编辑

根据您的回答,您似乎正在实例化不同的表单。以下是您需要做的:

首先,在主表格中声明:

private BookList _bookList = new BookList();
然后,无论您需要在哪里引用该表单,都可以使用_bookList来完成。例如:

_bookList.txtBookList.Text = "aaa";
_bookList.ShowDialog();
无论何时执行任务,都需要保留一个对对话框的引用。如果您每次都要在该表单上执行此操作:

BookList bookList = new BookList();

实际上,您正在创建完全不同的表单副本。

我刚刚复制了它,它工作正常(VS2010.NET4)。。之后是否显示表单的相同实例?(详情如下):

编辑

根据您的回答,您似乎正在实例化不同的表单。以下是您需要做的:

首先,在主表格中声明:

private BookList _bookList = new BookList();
然后,无论您需要在哪里引用该表单,都可以使用_bookList来完成。例如:

_bookList.txtBookList.Text = "aaa";
_bookList.ShowDialog();
无论何时执行任务,都需要保留一个对对话框的引用。如果您每次都要在该表单上执行此操作:

BookList bookList = new BookList();


实际上,您正在创建完全不同的表单副本。

您在哪里执行BookList表单上的.Show()。请确保您没有创建两个单独的表单实例,并在其中一个实例上设置文本框,但显示另一个实例(这是我怀疑的)。

您在哪里执行BookList表单上的.Show()。确保您没有创建两个单独的表单实例,并在其中一个实例上设置文本框,但显示另一个实例(这是我怀疑的)。

编辑。我在btnShowBooks button.EDIT中有ShowDialog。我在btnShowBooks按钮中有ShowDialog。我在btnShowBooks按钮中有ShowDialog。我编辑了我的帖子。。但我看到你已经完全根据我在编辑中的建议解决了这个问题!快乐的编码。我不确定我是否应该在类之外初始化东西。在WinForms应用程序中这通常并不重要。。如果您对此感到不舒服,那么您可以将其声明为类的一个成员,然后在构造函数中实例化它。我在btnShowBooks按钮中显示了ShowDialog。我编辑了我的帖子。。但我看到你已经完全根据我在编辑中的建议解决了这个问题!快乐的编码。我不确定我是否应该在类之外初始化东西。在WinForms应用程序中这通常并不重要。。如果您对此感到不舒服,那么您可以将其声明为类的一个成员,然后在构造函数中实例化它。因此,您建议我应该在显示新窗口的textbox in按钮中输入项?它确实有效。对不起,我不明白你的问题。我主要是说您正在创建一个BookList对象,但从未显示它。您需要以某种方式显示表单(.Show()是主要方法)此外,误读了类类型(BookList是表单,而不是控件),因此需要显示。我最初的设计是为了一个书单控件上的子控件。好吧,但我理解你。请看我的编辑。我只需要在类之外创建一个构造函数。但是我应该这样做吗?那么你建议我应该在显示新窗口的文本框中输入项目?它确实有效。对不起,我不明白你的问题。我主要是说您正在创建一个BookList对象,但从未显示它。您需要以某种方式显示表单(.Show()是主要方法)此外,误读了类类型(BookList是表单,而不是控件),因此需要显示。我最初的设计是为了一个书单控件上的子控件。好吧,但我理解你。请看我的编辑。我只需要在类之外创建一个构造函数。但我应该这样做吗?