如何:在 Windows 窗体应用程序中使用事件

如何:在 Windows 窗体应用程序中使用事件,第1张

参考微软的:网页链接

Windows 窗体应用程序中的一种常见情况是显示带控件的窗体,然后根据用户单击的控件执行特定 *** 作。             例如,当用户在窗体中单击 Button 控件时,该控件会引发一个事件。  通过处理该事件,应用程序可以针对该按钮单击 *** 作执行适当的应用程序逻辑。

有关 Windows 窗体的更多信息,请参见 Windows 窗体入门。      

处理 Windows 窗体上的按钮单击事件

创建一个具有 Button 控件的 Windows 窗体。

C#C++VB复制

private Button button

定义一个与 Click 事件委托签名匹配的事件处理程序。  Click 事件为该委托类型使用 EventHandler 类,而为该事件数据使用 EventArgs 类。

C#C++VB复制

private void Button_Click(object sender, EventArgs e) {     //... }

将事件处理程序方法添加到 Button 的 Click 事件。

C#C++VB复制

button.Click += new EventHandler(this.Button_Click)

说明                

设计器(如 Visual Studio 2005)将通过生成与下面的示例中的代码类似的代码来为您执行此事件连接。                  

示例                                    

下面的代码示例处理 Button 的 Click 事件以更改 TextBox 的背景色。  以粗体表示的元素显示了该事件处理程序以及它如何连结到 Button 的 Click 事件。

此示例中的代码不是使用可视设计器(例如 Visual Studio 2005)编写的,并且只包含基本的编程元素。  如果您使用设计器,它将生成附加代码。

C#C++VB复制

using

 System

using

 System.ComponentModel

using

 System.Windows.Forms

using

 System.Drawing

public

 

class

 MyForm : Form

{

    

private

 TextBox box

    

private

 Button button

    

public

 MyForm() : 

base

()

    {

        box = 

new

 TextBox()

        box.BackColor = System.Drawing.Color.Cyan

        box.Size = 

new

 Size(100,100)

        box.Location = 

new

 Point(50,50)

        box.Text = 

"Hello"

        button = 

new

 Button()

        button.Location = 

new

 Point(50,100)

        button.Text = 

"Click Me"

        

// To wire the event, create

        

// a delegate instance and add it to the Click event.

        button.Click += 

new

 EventHandler(

this

.Button_Click)

        Controls.Add(box)

        Controls.Add(button)

    }

    

// The event handler.

    

private

 

void

 Button_Click(

object

 sender, EventArgs e)

    {

        box.BackColor = System.Drawing.Color.Green

    }

    

// The STAThreadAttribute indicates that Windows Forms uses the

    

// single-threaded apartment model.

    [STAThread]

    

public

 

static

 

void

 Main()

    {

        Application.Run(

new

 MyForm())

    }

}

编译代码                                    

将上面的代码保存到一个文件(对于 C# 文件,扩展名为 .cs,对于 Visual Basic 2005,扩展名为 .vb)中,进行编译,然后执行。  例如,如果源文件名为 WinEvents.cs(或 WinEvents.vb),请执行下面的命令。

C#C++VB复制csc /r:System.DLL /r:System.Windows.Forms.dll /r:System.Drawing.dll WinEvents.vb

您的可执行文件将被命名为 WinEvents.exe。

import java.sql.*

import java.awt.*

import java.awt.event.*

import javax.swing.*class StudentApplication implements ActionListener

{

JFrame fMain

JPanel pan

JLabel labId,labName,labSex,labAge

JTextField texId,texName,texSex,texAge

JButton butQuery,butAdd,butUpdate,butDelete

Connection con

PreparedStatement ps

ResultSet rs

public StudentApplication()

{

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

con=DriverManager.getConnection("jdbc:odbc:Hospital","sa","123456")

//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

// Connection con=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433databaseName=Hospital_Tableuser=sapassword=123456")

}catch(Exception er)

{

JOptionPane.showMessageDialog(fMain,er.getMessage())

}

formStudent()

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==butQuery)

{

try{

ps=con.prepareStatement("select * from Hospital_Employee where Employee_ID=?")

ps.setString(1,texId.getText())

ResultSet rs= ps.executeQuery()

if(rs.next())

{

texName.setText(rs.getString(2))

texSex.setText(rs.getString(3))

texAge.setText(Integer.toString(rs.getInt(4)))

}

else

{

JOptionPane.showMessageDialog(fMain,"查询失败!")

}

}catch(Exception e1)

{

JOptionPane.showMessageDialog(fMain,e1.getMessage())

}

}

if(e.getSource()==butAdd)

{

try{

ps=con.prepareStatement("insert students values(?,?,?,?)")

ps.setString(1,texId.getText())

ps.setString(2,texName.getText())

ps.setString(3,texSex.getText())

ps.setInt(4,Integer.parseInt(texAge.getText()))

int Ruselt=ps.executeUpdate()

if(Ruselt>0)

{

JOptionPane.showMessageDialog(fMain,"增加成功")

}

else

{

JOptionPane.showMessageDialog(fMain,"增加失败!")

}

}catch(Exception e2)

{

JOptionPane.showMessageDialog(fMain,e2.getMessage())

}

}

if(e.getSource()==butUpdate)

{

try{

ps=con.prepareStatement("update students set stu_name=?,sex=?,age=? where stu_id=?")

ps.setString(1,texName.getText())

ps.setString(2,texSex.getText())

ps.setInt(3,Integer.parseInt(texAge.getText()))

ps.setString(4,texId.getText())

int Ruselt=ps.executeUpdate()

if(Ruselt>0)

{

JOptionPane.showMessageDialog(fMain,"修改成功")

}

else

{

JOptionPane.showMessageDialog(fMain,"修改失败")

}

}catch(Exception e2)

{

JOptionPane.showMessageDialog(fMain,e2.getMessage())

}

}

if(e.getSource()==butDelete)

{

try{

ps=con.prepareStatement("delete students where stu_id=?")

ps.setString(1,texId.getText())

int Ruselt=ps.executeUpdate()

if(Ruselt>0)

{

JOptionPane.showMessageDialog(fMain,"删除成功")

}

else

{

JOptionPane.showMessageDialog(fMain,"删除失败")

}

}catch(Exception e2)

{

JOptionPane.showMessageDialog(fMain,e2.getMessage())

}

}

}

private void formStudent()

{

fMain=new JFrame("学生信息")

pan=new JPanel()

labId=new JLabel("学号")

labName=new JLabel("名字")

labSex=new JLabel("性别")

labAge=new JLabel("年龄")

texId=new JTextField(15)

texName=new JTextField(15)

texSex=new JTextField(6)

texAge=new JTextField(6)

butQuery=new JButton("查询")

butAdd=new JButton("增加")

butUpdate=new JButton("修改")

butDelete=new JButton("删除")

fMain.add(pan)

pan.setLayout(null)

labId.setBounds(10,10,60,25)

labName.setBounds(10,55,60,25)

labSex.setBounds(10,100,60,25)

labAge.setBounds(10,145,60,25)

texId.setBounds(80,10,100,25)

texName.setBounds(80,55,100,25)

texSex.setBounds(80,100,100,25)

texAge.setBounds(80,145,100,25)

butQuery.setBounds(200,10,80,25)

butAdd.setBounds(200,50,80,25)

butUpdate.setBounds(200,100,80,25)

butDelete.setBounds(200,145,80,25)

pan.add(labId)

pan.add(labName)

pan.add(labSex)

pan.add(labAge)

pan.add(texId)

pan.add(texName)

pan.add(texSex)

pan.add(texAge)

pan.add(butQuery)

pan.add(butAdd)

pan.add(butUpdate)

pan.add(butDelete)

fMain.setSize(320,222)

fMain.setVisible(true)

butQuery.addActionListener(this)

butAdd.addActionListener(this)

butUpdate.addActionListener(this)

butDelete.addActionListener(this)

}

public static void main(String[] args)

{

StudentApplication sa=new StudentApplication()

}

}

gotfocus是获得焦点时触发,Lostfocus是失去焦点的时候触发。

比如:新建两个文本框,当点击第一个文本框的时候,则触发第一个文本框的getfocus事件,表示第一个文本框获得了焦点,可以进行 *** 作了。然后鼠标点击第二个文本框的时候,第一个文本框首先触发lostfocus事件,标明它已经失去焦点,无法进行 *** 作。同时第二个文本框获得焦点,允许输入数据进行 *** 作


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11560185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存