2023年11月26日发(作者:)

(更新时间)20211118Winform2021秋招Winform⾼频⾯试题

Winform常见笔⾯试题

1. 如何设置窗体页⾯的默认提交按钮?

设置Form的AcceptButton属性,将⽤户按Enter时,就相当于单击了AcceptButton属性指定的按钮,就会引发它的Click事件。

2. 怎么让⼀个窗体在运⾏时,只能打开⼀个?

1)可以通过遍历Application的OpenedForms集合,从中如果找到了该Form,将其激活即可

2)给该Form定义静态创建⽅法,除⾮该页⾯已经关闭或释放,否则直接返回该实例,不重复创建

public static Form1 frm;

//静态构造⽅法

public static Form1 CreateInstance()

{

if (frm== null || osed)

frm= new Form1();

return frm;

}

3. Form中有多个按钮,如何做到让它们都响应同⼀个单击事件处理程序,显⽰它们各⾃的名称信息?

先定义⼀个实现该效果的事件处理程序:

Private void Btn_Click(object sender,EventArgs e)

{

Button btn=(Button)sender;

($”点击的按钮是:{}”);

}

然后订阅按钮的单击事件,

如Btn1按钮的订阅:+=Btn_Click;

2)Form2 f2=new Form2();

ent=this;(这⾥的this指Form1,假设当前页就是Form1)

();

6. Winform中,Form之间传值⽅式有哪些?

(1)通过Tag属性

(2)通过构造函数(在要接收值的Form页代码后台,定义⼀个带参数的构造函数)

(3)在接收值的Form代码后台⽂件中,定义⼀个public的变量

(4)通过事件参数传值

7. Winform中,怎么实现Form2中点击打开按钮,打开Form1,输⼊⽂本,再点击Form1中的确定按钮,把输

⼊的值显⽰到Form2的⽂本框中?

⾸先⾃定义⼀个事件参数TextBoxArgs:

Public class TextBoxArgs:EventArgs

{

public string TxtValue{get;set}

Public TextBoxArgs(string val)

{

TextValue=val;

完成!

8. Winform应⽤程序中, 有什么不同?

** ()表⽰退出应⽤程序,()表⽰关闭当前Form。

⼀般只有当Form是启动窗体时,它们才会有⼀样的效果,如果是⾮启动窗体,()只是关闭当前Form⽽已。

9. Winform中,我们发现在⼀个Form相关的cs⽂件有两个,它们的类名都是⼀样的,只是代码后台类⽂件中

class之前有partical修饰⽽已,这是为什么?

C# 2.0可以将类、结构、接⼝的定义拆分到两个或多个源⽂件中,⽤partial关键字修饰。这⾥也是这个道理。

Form分为两个类⽂件,其实还是只⼀个类,⼀个⽂件名是 表⽰Form的UI代码⽂件,其中的代码是⾃动⽣成的,⼀般不建

议去修改;另⼀个以.cs结尾的是后台⽂件⽂件,我们可在其中⾃⼰代码。等到编译运⾏时,系统会⾃动将两部分合成⼀个类。

10. 如何在关闭窗体时,可以取消关闭?

在窗体的Form_Closing事件中,⾸先显⽰询问消息框,当⽤户点击“是”才执⾏关闭,当点击“否”,则取消关闭,实现⽅式如下:

private void Form1_Closing(object sender,FormClosingEventArgs e)

{

If((“您确定要关闭该页吗?”,”关闭提⽰”, ,

on)==)

=true;

}

11. DataGridView中添加了⼀个ComboBox列,如何使⽤?

如果DataGridView是要绑定数据的话,⾸先设置这个列的DataPropertyName,如果该列对应的数据源中的列是编号的话,就设置该编号列

的列名或属性名;

然后在页⾯的Load事件中,在绑定DataGridView的数据源之前,先获取该列,指定该下拉框列的DataSource.

绑定下拉框列的数据源:

private void pTop_MouseDown(object sender, MouseEventArgs e)

{

point = on;//按住的点

isMove = true;

}

private void pTop_MouseMove(object sender, MouseEventArgs e)

{

Point pointNew;

if ( == && isMove)

使⽤DataBing可以实现⾃动绑定,为Form定义⼀个实体模型,将控件的属性与实体模型中的属性绑定在⼀起,当页⾯控件的属性值改变

时,模型中的属性值⾃动更新,不需要⼀⼀再去获取;当模型中的属性值修改时,控件的属性值也会⾃动更新。

Form页⾯ 控件绑定:

Form1_Load事件处理程序:

UserInfo userInfo=null;

然后在Form1的Load事件中绑定数据源:

yMember = “DayName”;

ember = “DayValue”;

urce = GetWeekDayList();

16. Form窗体的常⽤事件有哪些?

Form的常⽤事件主要是:Load(加载窗体时发⽣)、FormClosing(正在关闭时还⽰关闭)、Activated(窗体被激活时)、

SizeChanged(Size属性更改时)、Resize(调整窗体⼤⼩时)、LocationChanged(Location属性更改时)

17. 计时器如何实现动态时间

这个计时器是基于UI的,可以修改控件的。⾸先,直接在Form上拖控件Timer,设置Enabled=true(程序运⾏计时器⽴即运⾏);然后设置时

间间隔:Interval 1000(ms),表⽰每隔1s执⾏⼀次。

Location=new (48, 37);

};

(label1);

}

这样就将⼀个Label控件添加到了Form中。

20. 怎样将⼀个Form显⽰在Panel之中?

将Form1作为⽗窗体,在窗体上放⼀个Panel控件,将Form2显⽰在Panel之中。

⾸先,要将Form2的TopLevel设置为false,因为顶级窗体不能显⽰在其他控件之中。

其次,将Form2的FormBorderStyle设置为:。⽆边框。

Form2添加到Panel的代码如下:

();//移除所有控件

Form2 frm2 = new Form2 ();

frm2 .TopLevel = false;

frm2 .FormBorderStyle = ;

(frm2 )

frm2 .Show();

24. 怎么设置StatusStrip控件中项之间的分隔线?

StatusStrip控件中没有分隔线的项,那么 如果各项之间要显⽰分隔线,怎么办呢?答案很简单。

在StatusStrip中添加⼀个StatusLabel⼦项,将它的BorderSides改成Left或Right即可。

25. 如何根据提供的值列表,设置CheckedListBox中项的勾选状态?

假设提供的值列表是List valueList

public static void SetCheck(CheckedListBox cblItems, List valueList)

{

foreach (string str in valueList)

{

for (int i = 0; i < ; i++)

{

if (mText([i]) == str)

其实这⾥我们仍然使⽤CheckEdit控件来实现,⽰例如下:

tyle = ;

此外,必须确保所设定的所有单选按钮设置RadioGroupIndex相同的索引编号。

29. DevExpress中,如何修改SimpleButton的背景⾊?

要对simplebutton按钮控件设置背景⾊,除了给其Appearance下的BackColor属性赋值之外,还需要将ButtonStyle的值,设置为除

Default和Office2003之外的其它值,背景⾊才会起效,否则没有任何改变。⽐如将ButtonStyle为Flat。

30. DevExpress中,怎样让TextEdit只能输⼊6位数字?

⾸先,将TextEdit的 MaskType设置为:Numeric,

然后,将Edit Mask改为:“######”即可。

度条控件) 17. DXValidationProvider(验证控件)

28. DevExpress Winform 如何实现单选按钮?