哪位大哥可以给个C#监听器的例子看看 ~~ 最好有详细注释的 哪位大哥可以给个C#监听器的例子看看 ~~ 最好有详细注释的 小弟想用监听器写个类似网络会议的东西 可刚接触C#没多长时间,不懂监听器 , 请哪位大哥教教,在此谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 接口HttpSessionListenersessionCreated() 当一个用户session创建时调用sessionDestroyed()当一个用户session销毁时调用private static int count=0;public void sessionCreated(HttpSessionEvent arg0) { count++; System.out.println("有人上线了,当前在线人数:"+count);}public void sessionDestroyed(HttpSessionEvent arg0) { count--; System.out.println("有人下线了,当前在线人数:"+count);}web.xml配置<!-- 实现类 --><listener><listener-class>com.sxy.listener.MyHttpSessionListener</listener-class></listener>HttpSessionAttributeListenerattributeAdded() 会话调用setAttribute("user",obj)时调用,user不存在时attributeReplaced()会话调用setAttribute("user",obj)时调用,user存在时attributeRemoved()会话调用removeAttribute("user")时调用HttpSessionBindingListener(不需要再web.xml中配置)HttpSessionActivationListenerServletContextAttributeListene,ServletRequestAttributeListener这来两个接口和HttpSessionAttributeListener使用方式类似ServletContextListener 加载web应用的时候(启动服务器)和关闭web应用的时候ServletRequestListener 当request对象创建和销毁的时候 public void 新建ToolStripMenuItem_Click(object sender, EventArgs e) { MARK = true; if (fm2 == null) { fm2 = new Form2(); fm2.TopLevel = false; fm2.Width = this.splitContainer1.Panel2.Width; fm2.Height = this.splitContainer1.Panel2.Height; fm2.richTextBox1.Width = fm2.Width - 24; fm2.richTextBox1.Height = fm2.Height - 24; fm2.Validate(); this.splitContainer1.Panel2.Controls.Clear(); this.splitContainer1.Panel2.Controls.Add(fm2); fm2.Visible = true; } else { //在新建文档文本之前判断是否存在子窗口,再判断子窗口里内容是否有被修改过,判断是否已经保存 for (int i = 0; i < list_names.Count; i++) { if (list_names[i] == this.Text) { if (list_texts[i] != fm2.richTextBox1.Text) { if (MessageBox.Show(this.Text + "的内容已被修改过,是否保存?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { //该处调用保存文本监听器 EventArgs enew = new EventArgs(); //之前MARK已经设为true,所以第一次必定跳过,后来的用于判断是否保存成功 MARK = false; 保存ToolStripMenuItem_Click(fm2, enew); } break; } } } } if (MARK) { NO++; //当存在相同名字的,自动更改新建文档的名字直到不再相同,考虑当一开始是打开操作,防止后来重名操作处理 //防止重名有利于处理后来的查找更新保存首次性问题,考虑存在先打开后新建情况 if (list_names.Count > 0) { while (list_names.Contains(System.IO.Path.GetFullPath(".\\") + "文本" + NO + ".txt")) { NO++; } } //通过listbox作为标题切换文本内容,list_names与list_texts作为与listbox项里同步的序号更新,查找时list_names匹配的序号也对应着相应的list_texts所装载的内容 string name = System.IO.Path.GetFullPath(".\\") + "文本" + NO + ".txt"; listBox1.Items.Add(name); list_names.Add(name); //新建时文本内容为空,所以list_texts所对应的指定文本内容初始值为空 list_texts.Add(""); this.Text = name; //新建后的文档文本内容为空 fm2.richTextBox1.Text = ""; } } C# 中树形控件的刷新问题? 用dataview的rowfilter筛选24小时时间出错,求解? 如何把字符串转换成ansi类型 DataTable 的宽度问题 请问各位大侠,如何在C#中直接访问.res文件???在线等... 我 单击web控件的datagrid的某一行,为何不自动选中该行?如何选中它?要颜色提示的。 (C#)获得数据库单表字段信息问题~~~急的不行了 《C#高级编程》中的一句话,怎样理解? 如何在listbox中加入textbox控件? DataGrid 添加行的问题 好心人帮帮忙进来看看! C# XML 查找 急!!! 使用list的一个问题
private static int count=0;public void sessionCreated(HttpSessionEvent arg0) { count++; System.out.println("有人上线了,当前在线人数:"+count);}public void sessionDestroyed(HttpSessionEvent arg0) { count--; System.out.println("有人下线了,当前在线人数:"+count);}
web.xml配置<!-- 实现类 --><listener><listener-class>com.sxy.listener.MyHttpSessionListener</listener-class></listener>
HttpSessionAttributeListenerattributeAdded() 会话调用setAttribute("user",obj)时调用,user不存在时attributeReplaced()会话调用setAttribute("user",obj)时调用,user存在时attributeRemoved()会话调用removeAttribute("user")时调用
HttpSessionBindingListener(不需要再web.xml中配置)HttpSessionActivationListener
ServletContextAttributeListene,ServletRequestAttributeListener这来两个接口和HttpSessionAttributeListener使用方式类似
ServletContextListener 加载web应用的时候(启动服务器)和关闭web应用的时候ServletRequestListener 当request对象创建和销毁的时候
{
MARK = true;
if (fm2 == null)
{
fm2 = new Form2();
fm2.TopLevel = false;
fm2.Width = this.splitContainer1.Panel2.Width;
fm2.Height = this.splitContainer1.Panel2.Height;
fm2.richTextBox1.Width = fm2.Width - 24;
fm2.richTextBox1.Height = fm2.Height - 24;
fm2.Validate();
this.splitContainer1.Panel2.Controls.Clear();
this.splitContainer1.Panel2.Controls.Add(fm2);
fm2.Visible = true;
}
else
{
//在新建文档文本之前判断是否存在子窗口,再判断子窗口里内容是否有被修改过,判断是否已经保存
for (int i = 0; i < list_names.Count; i++)
{
if (list_names[i] == this.Text)
{
if (list_texts[i] != fm2.richTextBox1.Text)
{
if (MessageBox.Show(this.Text + "的内容已被修改过,是否保存?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
//该处调用保存文本监听器
EventArgs enew = new EventArgs();
//之前MARK已经设为true,所以第一次必定跳过,后来的用于判断是否保存成功
MARK = false;
保存ToolStripMenuItem_Click(fm2, enew);
}
break;
}
}
}
}
if (MARK)
{
NO++;
//当存在相同名字的,自动更改新建文档的名字直到不再相同,考虑当一开始是打开操作,防止后来重名操作处理
//防止重名有利于处理后来的查找更新保存首次性问题,考虑存在先打开后新建情况
if (list_names.Count > 0)
{
while (list_names.Contains(System.IO.Path.GetFullPath(".\\") + "文本" + NO + ".txt"))
{
NO++;
}
}
//通过listbox作为标题切换文本内容,list_names与list_texts作为与listbox项里同步的序号更新,查找时list_names匹配的序号也对应着相应的list_texts所装载的内容
string name = System.IO.Path.GetFullPath(".\\") + "文本" + NO + ".txt";
listBox1.Items.Add(name);
list_names.Add(name);
//新建时文本内容为空,所以list_texts所对应的指定文本内容初始值为空
list_texts.Add("");
this.Text = name;
//新建后的文档文本内容为空
fm2.richTextBox1.Text = "";
}
}