我有一个用户控件为此我想我初始化一些成员:
// MyUserControl.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MyNamespace
{
public partial class MyUserControl : UserControl
{
private string m_myString;
private int m_myInt;
public string MyString
{
get { return m_myString; }
set { m_myString = value; }
}
public int MyInt
{
get { return m_myInt; }
set { m_myInt = value; }
}
public MyUserControl()
{
InitializeComponent();
MyString = ""; // was null, now I think it's ""
MyInt = 5; // was 0, now I think it's 5
}
// .........
}
}
当我插入这个控制到我的主要形式,虽然和调用内检查值的函数MyUserControl
,事情并不像他们初始化:
// MainForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MyProgram
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void MyButton_Click(object sender, EventArgs e)
{
// this prints 0 rather than 5
MessageBox.Show(this.theUserControl.MyInt.ToString());
}
}
}
我猜这是一个非常简单的错误,但我不知道在哪里。 我试过前面加上this.
的事情,但是这可能不是去修复代码的方式。 :)
感谢一如既往!
编辑:步入设计师代码皮特提示表明我在哪里写上发生了什么。 首先,我叫用户控件的构造函数,再后来,价值观得到了用默认值覆盖。 我没有指定任何默认值(Sanjeevakumar Hiremath的建议),这样的默认值是那些基本数据类型(用于int
此为0)。