Python CLR Winforms -在.NET Winforms之间传递数据

aoyhnmkz  于 2022-11-17  发布在  Python
关注(0)|答案(1)|浏览(116)

在使用Python生成和自动化.NET WinForms时,我有一个相当简单的任务一直困扰着我。如何在表单之间传递数据?
我什么都试过了使用全局变量,使用不可变的字符串,等等。似乎没有什么坚持。有人能给我看一个例子,给我发一个链接,或者让我知道我做错了什么吗?我已经在这方面做了一个多星期,沮丧开始增加。
下面是一个简单的示例,它从一个表单中提取数据(字符串),然后将其发送到文本框中的另一个表单。

MYSTRING = ''

import clr

clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import *
from System.Drawing import *

class MyForm(Form):
    def __init__(self):
        self.Text1 = TextBox()
        self.Button1 = Button()
        
        self.Button1.Location = Point(0, self.Text1.Bottom + 10)
        self.Button1.Text = 'Send'
        
        self.Controls.Add(self.Text1)
        
        self.Controls.Add(self.Button1)
        
        self.Button1.Click += self.Button1_Click
        
    def Button1_Click(self, sender, args):
        MYSTRING = self.Text1.Text
        self.TopLevel = False
        f2 = MyForm2()
        f2.Show()
        self.TopLevel = True
        

class MyForm2(Form):    
    def __init__(self):
        self.Text2 = TextBox()
        
        self.Controls.Add(self.Text2)
        
        self.Load += self.MyForm2_Load
        
    def MyForm2_Load(self, sender, args):
        self.Text2.Text = MYSTRING

Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(False)

Application.Run(MyForm())
elcex8rz

elcex8rz1#

所以我又一次想通了。
我不得不在我的一个事件中设置一个python全局变量来触发一个事件,就像这样...

def dgvExpanderInfo_CellDoubleClick_Event(self, sender, args):
    global SelectedExpanderData_List

    ...

...然后我可以访问globabl变量中的任何内容-在本例中,它是一个列表。

def MyForm2_Form_Load_Event(self, sender, args):
        self.textbox1.Text = SelectedExpanderData_List[0]
        self.textbox2.Text = SelectedExpanderData_List[1]
        self.textbox3.Text = SelectedExpanderData_List[2]
        ...

我希望这对其他人有帮助,因为我在任何地方都没有找到关于这方面的真实的文档。

相关问题