我正在用C#制作一个学校课程,其目的是让用户输入电影数据,然后将其放入该电影的对象中。它还将包括其他功能,例如用户可以搜索电影(它说我必须制作3个电影对象并将它们存储在一个阵列中,所有这些都由用户输入)。
我创建了Windows窗体应用程序的第一部分,它是一个屏幕,可以获取用户的所有输入,如名称,导演,评级等......还有一个创建对象的提交按钮。有没有办法在没有创建新表格的情况下使用相同的屏幕并清除文本框,这样当再次点击提交按钮时,它会创建一个像'film2'这样的新对象?
以下是我提交按钮的代码:
private void button1_Click(object sender, EventArgs e)
{
int year = Convert.ToInt32(dBox_year.Text);
Film film1 = new Film(tbox_name.Text, tbox_director.Text, tbox_actor1.Text, tbox_actor2.Text, year, tbox_rating.Text);
filmArray[0] = film1;
}
所以,你看我想如何让主屏幕上的文本框自行清除,并重复使用相同的屏幕,但只有它是'Film film2 = ...'等。
这不是一个断言,我们还没有在课堂上讨论这个问题,所以我试过了。
答案 0 :(得分:2)
private void button1_Click(object sender, EventArgs e)
{
int year = Convert.ToInt32(dBox_year.Text);
Film film1 = new Film(tbox_name.Text, tbox_director.Text, tbox_actor1.Text, tbox_actor2.Text, year, tbox_rating.Text);
filmArray[0] = film1;
//clearing after adding to array
//or you can just use .Clear() method
tbox_name.Text = String.Empty;
tbox_director.Text = String.Empty;
tbox_actor1.Text = String.Empty;
tbox_actor2.Text = String.Empty;
tbox_rating.Text = String.Empty;
}
答案 1 :(得分:0)
tbox_name.Clear() - 清除文本框控件中的所有文本。(继承自TextBoxBase。)
答案 2 :(得分:0)
您可以使用List而不是在表单级别声明的数组:
CREATE TABLE #NEWTABLE
(
NEW_CUST_KEY int not null ,
CUST_ID int not null,
CUST_EMAIL nvarchar(100) null
)
------------------------------------
insert into #NEWTABLE (NEW_CUST_KEY,CUST_ID,CUST_EMAIL)
SELECT ROW_NUMBER() OVER(ORDER BY CUST_ID, CUST_EMAIL) AS NEW_CUST_KEY, CUST_ID, CUST_EMAIL
FROM
(
SELECT CUST_ID, CUST_EMAIL
FROM OLDTABLE
GROUP BY CUST_ID, CUST_EMAIL
) T
UPDATE Upd SET NEW_CUST_KEY = T.NEW_CUST_KEY
FROM #NEWTABLE Upd
join (
SELECT CUST_ID, min(NEW_CUST_KEY) AS NEW_CUST_KEY
FROM #NEWTABLE
GROUP BY CUST_ID) T
on Upd.CUST_ID = T.CUST_ID
UPDATE Upd SET NEW_CUST_KEY = T.NEW_CUST_KEY
FROM #NEWTABLE Upd
join (
SELECT CUST_EMAIL, min(NEW_CUST_KEY) AS NEW_CUST_KEY
FROM #NEWTABLE
GROUP BY CUST_EMAIL) T
on nullif(Upd.CUST_EMAIL,'') = nullif(T.CUST_EMAIL,'')
UPDATE Upd SET NEW_CUST_KEY = T.CHANGE_CUST_KEY
FROM #NEWTABLE Upd
join (
SELECT NEW_CUST_KEY, ROW_NUMBER() OVER(ORDER BY NEW_CUST_KEY) AS CHANGE_CUST_KEY
FROM #NEWTABLE
GROUP BY NEW_CUST_KEY) T
on Upd.NEW_CUST_KEY = T.NEW_CUST_KEY
select * from #NEWTABLE
然后你的按钮点击甚至看起来像
private List<Film> filmList = new List<Film>();
在这里,您将创建一个新的Film对象,并将其直接添加到电影列表中,然后清除文本框。
如果您需要一个阵列的具体原因,那么您以后可以随时进行
private void button1_Click(object sender, EventArgs e)
{
int year = Convert.ToInt32(dBox_year.Text);
filmList.Add(new Film(tbox_name.Text, tbox_director.Text, tbox_actor1.Text, tbox_actor2.Text, year, tbox_rating.Text));
tbox_name.Text = string.Empty;
tbox_director.Text = string.Empty;
tbox_actor1.Text = string.Empty;
tbox_actor2.Text = string.Empty;
tbox_rating.Text = string.Empty;
dBox_year.Text = string.Empty;
}
希望这有帮助!
答案 3 :(得分:0)
单击“提交”按钮时,您希望在数组末尾添加对象,而不是将其放在第一个位置。因此,您需要一个额外的变量,例如,使用0和增量初始化的filmCount每次提交。
Film film1 = new Film(tbox_name.Text, tbox_director.Text, tbox_actor1.Text, tbox_actor2.Text, year, tbox_rating.Text);
filmArray[filmCount++] = film1;
然后你清除texboxes
foreach(TextBox TB in this.Controls)
{
TB.Text = "";
}