为什么IronPython没有正确设置我的Control.Text?

时间:2013-12-19 16:15:21

标签: winforms ironpython

本周我一直在搞乱Python和IronPython,我偶然发现了一个非常烦人的怪异。

基本上我连接到MSSQL数据库,并且在成功设置self.label1.Text = "Connected to " + sqlConn.Database + " on " + sqlConn.DataSource之后,我的标签正在更新,只是在表单上说“已连接到”。之后我放置了MessageBox.Show(self.label1.Text),这显示了所有正确的信息(“连接到DATASOURCE上的DATABASE”)。我的问题是,为什么IronPython没有在表单上正确设置我的标签文本?

enter image description here

class MyForm(Form):
    def __init__(self):
        self.button1 = Button()
        self.button1.Text = "Click Me!"
        self.button1.Click += self.button1_Click
        self.Controls.Add(self.button1)

        self.label1 = Label()
        self.label1.Location = Point(10, 50)
        self.Controls.Add(self.label1)

    def button1_Click(self, sender, args):
        sqlConn = self.connectSql()
        if sqlConn.State == ConnectionState.Open:
            self.label1.Text = "Connected to " + sqlConn.Database + " on " + sqlConn.DataSource
            MessageBox.Show(self.label1.Text)
        else:
            self.label1.Text = "Failed connection"

    def connectSql(self):
        sqlConn = SqlClient.SqlConnection("Data Source=(local);Initial Catalog=IT_Project;Integrated Security=True;")
        try:
            sqlConn.Open()
        except System.Exception as ex:
            MessageBox.Show("Error!\r\n" + ex.Message, "EXCEPTION HANDLED")
        return sqlConn

提前致谢。 :)

1 个答案:

答案 0 :(得分:1)

Label的内容因其默认大小和行为而被截断。通过手动设置足够的大小或使用AutoSize-Property,可以显示完整内容。 创建标签后,可以使用以下代码将标签大小调整为其内容:

self.label1.AutoSize = True

消息框显示实际控件文本中的完整值暗示了根本原因。

请注意,根据文档,自动调整大小默认行为可能会有所不同:

  

使用设计器添加到表单时,默认值为true。从代码实例化时,默认值为false。