在 windows 表单应用程序中在哪里创建我的对象?
Where to create my objects in a windows form app?
我正在尝试在我的 windows 表单应用程序中创建一个对象,但如果我在构造函数中创建它,那么我将无法在整个应用程序中访问它...(就像事件一样)在下面的代码中,Time1 不可用。我很高兴收到你的来信...
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClockApp
{
public partial class ClockApp : Form
{
public ClockApp()
{
InitializeComponent();
ClockApp Time1 = new ClockApp();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void ClockApp_Load(object sender, EventArgs e)
{
}
private void btnOk_Click(object sender, EventArgs e)
{
//ClockApp Time1 = new ClockApp();
Time1.getHour = Convert.ToInt16(txtHour.Text);
Time1.getMin = Convert.ToInt16(txtMin.Text);
Time1.getSec = Convert.ToInt16(txtSec.Text);
if(rbUniversal.Checked == true)
{
Time1.ToUniversal();
}else if(rbStandard.Checked == true)
{
Time1.ToStandard();
}
else
{
lblTime.Text = "NOT Working...";
}
}
}
}
下面的代码是我的class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClockApp
{
public partial class ClockApp : Form
{
// Fields
private int Hour;
private int Min;
private int Sec;
// Properties
public int getHour
{
get
{
return Hour;
}
set
{
if(value > 23 && value < 0)
{
Hour = 23;
}
else
{
Hour = value;
}
}
}
public int getMin
{
get
{
return Min;
}
set
{
if(value > 59 && value < 0)
{
Min = 59;
}
else
{
Min = value;
}
}
}
public int getSec
{
get
{
return Sec;
}
set
{
if(value > 59 && value < 0)
{
Sec = 59;
}
else
{
Sec = value;
}
}
}
// Constructors
// Methods
// ToUniversal()
public void ToUniversal()
{
lblTime.Text = Hour.ToString() + ":" + Min.ToString() + ":" + Sec.ToString();
}
// ToStandard()
public void ToStandard()
{
if(Hour > 12)
{
int[] Modifier = new int[12];
for (int i = 0; i < 12; i++)
{
Modifier[i] = i + 13;
if (Hour == Modifier[i])
{
Hour = i+1;
lblAMPM.Text = "PM";
}
}
lblTime.Text = Hour.ToString() + ":" + Min.ToString() + ":" + Sec.ToString();
}
else
{
lblAMPM.Text = "AM";
lblTime.Text = Hour.ToString() + ":" + Min.ToString() + ":" + Sec.ToString();
}
}
}
}
- 您不需要在构造函数中创建
ClockApp
的新实例。
- 删除该行。
- 字段(或其他字段)'Time1' 不是必需的。从您的代码中完全删除 'Time1.':
Time1.getHour = Convert.ToInt16(txtHour.Text);
=> getHour = Convert.ToInt16(txtHour.Text);
Time1.ToUniversal();
=> ToUniversal();
- 等等。
这应该使您的代码至少可以编译。
错误:
value > 23 && value < 0
总是错误的。您必须使用 ||
而不是 &&
。
value > 59 && value < 0
相同
代码约定:
我知道你刚开始接触 c#,但请检查通用编码约定以提高可读性:
- 属性:首字母大写
- 字段:首字母未大写
- 不要以 'get' 开头你的 属性 名字。只需
Hour
、Min
或 Sec
即可。
我正在尝试在我的 windows 表单应用程序中创建一个对象,但如果我在构造函数中创建它,那么我将无法在整个应用程序中访问它...(就像事件一样)在下面的代码中,Time1 不可用。我很高兴收到你的来信...
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClockApp
{
public partial class ClockApp : Form
{
public ClockApp()
{
InitializeComponent();
ClockApp Time1 = new ClockApp();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void ClockApp_Load(object sender, EventArgs e)
{
}
private void btnOk_Click(object sender, EventArgs e)
{
//ClockApp Time1 = new ClockApp();
Time1.getHour = Convert.ToInt16(txtHour.Text);
Time1.getMin = Convert.ToInt16(txtMin.Text);
Time1.getSec = Convert.ToInt16(txtSec.Text);
if(rbUniversal.Checked == true)
{
Time1.ToUniversal();
}else if(rbStandard.Checked == true)
{
Time1.ToStandard();
}
else
{
lblTime.Text = "NOT Working...";
}
}
}
}
下面的代码是我的class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClockApp
{
public partial class ClockApp : Form
{
// Fields
private int Hour;
private int Min;
private int Sec;
// Properties
public int getHour
{
get
{
return Hour;
}
set
{
if(value > 23 && value < 0)
{
Hour = 23;
}
else
{
Hour = value;
}
}
}
public int getMin
{
get
{
return Min;
}
set
{
if(value > 59 && value < 0)
{
Min = 59;
}
else
{
Min = value;
}
}
}
public int getSec
{
get
{
return Sec;
}
set
{
if(value > 59 && value < 0)
{
Sec = 59;
}
else
{
Sec = value;
}
}
}
// Constructors
// Methods
// ToUniversal()
public void ToUniversal()
{
lblTime.Text = Hour.ToString() + ":" + Min.ToString() + ":" + Sec.ToString();
}
// ToStandard()
public void ToStandard()
{
if(Hour > 12)
{
int[] Modifier = new int[12];
for (int i = 0; i < 12; i++)
{
Modifier[i] = i + 13;
if (Hour == Modifier[i])
{
Hour = i+1;
lblAMPM.Text = "PM";
}
}
lblTime.Text = Hour.ToString() + ":" + Min.ToString() + ":" + Sec.ToString();
}
else
{
lblAMPM.Text = "AM";
lblTime.Text = Hour.ToString() + ":" + Min.ToString() + ":" + Sec.ToString();
}
}
}
}
- 您不需要在构造函数中创建
ClockApp
的新实例。- 删除该行。
- 字段(或其他字段)'Time1' 不是必需的。从您的代码中完全删除 'Time1.':
Time1.getHour = Convert.ToInt16(txtHour.Text);
=>getHour = Convert.ToInt16(txtHour.Text);
Time1.ToUniversal();
=>ToUniversal();
- 等等。
这应该使您的代码至少可以编译。
错误:
value > 23 && value < 0
总是错误的。您必须使用||
而不是&&
。value > 59 && value < 0
相同
代码约定:
我知道你刚开始接触 c#,但请检查通用编码约定以提高可读性:
- 属性:首字母大写
- 字段:首字母未大写
- 不要以 'get' 开头你的 属性 名字。只需
Hour
、Min
或Sec
即可。