无法从其他类更改textBox.text-C#-VS2010我有一个名为Form1的表单。在其中,我有一个名为Encrypt的按钮。当我按下那个按钮时,我调用了另一个类中的方法。我希望该方法更改textBox1.text的值,但是当我在Form1类中使用此代码时没有任何反应publicstringtxtbox1{get{returntextBox1.Text;}设置{textBox1.Text=value;}}在另一个类Form1的方法中textboxes=newForm1();//创建Form1类的对象textboxes.txtbox1="whatever";第一个文本框中没有任何变化。就像我什么都不按一样!任何帮助将不胜感激在您的其他课程中,您需要引用单击按钮的表单(并且有一个现有的文本框),而不是新表单。您正在实例化的这个新表单不是您在单击按钮的屏幕上查看的表单。(我假设你的事件处理程序存在于Form1类中,然后根据需要将信息“转发”到其他类的方法?如果不是......它应该!)按钮引用可以通过发送者对象获得,并且事件参数传递给事件处理程序。您可以通过将this关键字传递给其他类的方法来传递对当前Form1实例的引用。或者,如果适合您,您可以传递发件人,或者只是将对特定文本框的显式引用传递给您的其他方法。例如,将对表单的引用传递给其他方法://表单上的事件处理程序privatevoidbutton1_Click(objectsender,EventArgse){ButtonWasPressedOnForm(this);}//其他类中的其他方法publicvoidButtonWasPressedOnForm(FormformWhereButtonPressed){//直接作用于文本框:TextBoxtextBoxToUpdate=(TextBox)formWhereButtonPressed.Controls.Find("textBox1");textBoxToUpdate.Text="随便";//或者,使用Form1.txtBox1property.formWhereButtonPressed.txtBox1="whatever";例如,将对显式文本框的引用传递给您的其他方法://表单上的事件处理程序privatevoidbutton1_Click(objectsender,EventArgse){ButtonWasPressedOnForm(textBox1);}//其他类中的其他方法publicvoidButtonWasPressedOnForm(TextBoxtextBoxToUpdate){textBoxToUpdate.Text="whatever";例如,将事件对象传递给您的其他方法://表单上的事件处理程序privatevoidbutton1_Click(objectsender,EventArgse){ButtonclickedButton=(Button)sender;ButtonWasPressedOnForm(clickedButton);}//其他类中的其他方法publicvoidButtonWasPressedOnForm(ButtonclickedButton){FormtheParentForm=clickedButton.FindForm();//直接作用于文本框:TextBoxtextBoxToUpdate=(TextBox)theParentForm.Controls.Find("textBox1");textBoxToUpdate.Text="随便";//或者,通过表单的属性对文本框进行操作:theParentForm.txtBox1="whatever";此外,在“其他方法”上添加一个断点以确保触发此代码。如果没有,返回事件处理程序以确保它被触发。如果没有,请检查您的活动连接。尽管在所有情况下您都需要注意要更新的控件的保护级别...您需要根据表单和其他类之间的关系将其设置为公共、内部或受保护,如果您希望它来自在Form1类之外更新它。更好的OO方法是在Form1上设置一个方法,允许其他类告诉Form1更新它们的控件(例如updateTextBox(stringnewText))。因为允许外部对象直接作用于类的成员不是OO最佳实践(因为这需要类的内部知识......应该被封装以便您的实现可以在不破坏类之间存在的接口的情况下进行更改和外面的世界)。编辑:实际上,在重新阅读您的问题时,您已经使用获取/设置属性包装了文本框。好的。因此,您应该将对表单的引用传递给其他方法,然后通过属性更新表单的文本。此方法已添加到上面的示例中。我很容易做到这一点。首先在类中创建一个TextBoxclassclass1{publicstaticTextBoxtxt1=newTextBox();publicstaticvoidHello(){txt1.Text="Hello";有一个按钮(button1)和一个文本框(textBox1)。好的,现在复制你想要更改的TextBox的地址,我测试了它,它工作正常publicpartialclassForm1:}privatevoidbutton1_Click(objectsender,EventArgse){class1.txt1=textBox1;class1.你好();还有,Form1类的保护级别是多少?这是我经常遇到问题的地方......我忘记了如果这个类不是公共的那么它就不能被它之外的类访问。也可以使用“Protected”,但这取决于两个类之间的关系。我发现在这种情况下,将信息从一种形式传递到另一种形式是将信息保存在类文件中,而不是形式本身示例形式1:publicpartialclasscustomerHistory:Form{//加载类dependant.csdependentscls_dependents=newdependencies();publiccustomerHistory(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){dependents.passexboxvaluetoclass=textbox1.text;//loadnextform}然后我要做的就是调用form_loadlabel1.text=dependents.passexboxvaluetoclassonthesecondform;这样你就可以回调很多信息,因为它们都将存储在类中而不是物理形式本身你也可以通过在类中创建一个事件来完成,你的表单订阅该事件并传递数据到UIasEventArgs...以上是C#学习教程:textBox.text不能从其他类更改-C#-VS2010分享如果对你有用,需要了解更多C#学习教程,希望你会更加关注它。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
