小弟用c# (.net2005)写了个P2P聊天程序,类似QQ的界面,支持点发送按钮发送消息和按CTRL+ENTER发送消息。
可是现在小弟碰到个难题困扰了几天了,就是点发送一切正常,而CTRL+ENTER发送消息后(完全调用点发送按钮那个事件)会莫名的空出第一行(焦点定位在第二行,以后按Ctrl+Enter发送一直定位在第二行),而用ALT+ENTER或SHIFT+ENTER却没这个毛病,是不是CTRL+ENTER会强制先获得焦点再换一行??难道是WINDOWS本身的设定么?怎么改呢?
大概代码如下
private void rTSend_KeyDown(object src, KeyEventArgs a)
{
if (a.KeyCode == Keys.Enter && a.Control)
{
button1_Click(this, new EventArgs());
} }
button1_Click中关键代码是
TcpClient tcpClient = new TcpClient(tBIP.Text, tBPort.Text); NetworkStream tcpStream = tcpClient.GetStream(); //获得网络访问的数据流 StreamWriter streamW = new StreamWriter(tcpStream);
streamW.Write(msg); //将字符串写入流 streamW.Flush(); //将缓冲区数据写入网络流 tcpStream.Close(); //关闭网络流 tcpClient.Close(); //关闭连接 this.rTRe.AppendText(msg);
this.rTSend.Clear();//最后两行用于清空输入筐并获得焦点,可能问题就在这
this.rTSend.Focus();
可是现在小弟碰到个难题困扰了几天了,就是点发送一切正常,而CTRL+ENTER发送消息后(完全调用点发送按钮那个事件)会莫名的空出第一行(焦点定位在第二行,以后按Ctrl+Enter发送一直定位在第二行),而用ALT+ENTER或SHIFT+ENTER却没这个毛病,是不是CTRL+ENTER会强制先获得焦点再换一行??难道是WINDOWS本身的设定么?怎么改呢?
大概代码如下
private void rTSend_KeyDown(object src, KeyEventArgs a)
{
if (a.KeyCode == Keys.Enter && a.Control)
{
button1_Click(this, new EventArgs());
} }
button1_Click中关键代码是
TcpClient tcpClient = new TcpClient(tBIP.Text, tBPort.Text); NetworkStream tcpStream = tcpClient.GetStream(); //获得网络访问的数据流 StreamWriter streamW = new StreamWriter(tcpStream);
streamW.Write(msg); //将字符串写入流 streamW.Flush(); //将缓冲区数据写入网络流 tcpStream.Close(); //关闭网络流 tcpClient.Close(); //关闭连接 this.rTRe.AppendText(msg);
this.rTSend.Clear();//最后两行用于清空输入筐并获得焦点,可能问题就在这
this.rTSend.Focus();
解决方案 »
- 读取 string 中的位
- c#实现更新~~~~
- socket 异步通信的问题
- ???请问如何在界面添加 小方格并显示相关信息 ???
- GridView的一些操作问题?
- 对数据库的排它访问权怎么处理(80分求高手)
- c# 如何让richtextbox中的图片控件和rtb中的文字一样待遇?
- C# 通过两个dateTimePicker控件查询ACCESS里的内容,查不到!!急!请高手指点
- HttpWebRequest、访问百度空间注册页面、部分文字乱码、另某些网页样式没有了
- 关于close事件的问题!谢谢!
- 如何能在web页面上显示word文档的内容,请各位高手指教!!(在线跪求答案)
- 求救:C# 里如何编写一小断程序来判断 某个下载地址是否有效
并且看看是不是两个ctrl都一样
1.第一次就能调用
2.两个CTRL都一样。而且不可能是我个人的键盘问题,别人用也一样。是不是CTRL和SHIFT以及ALT作为keydown事件的辅助参数,本身的性能就有区别?
还是要使用keyPress或者keyUp事件完善组合键的输入?
实在百思不得其解
{
if (((keyData & Keys.Control) == Keys.None))
{
Keys keys1 = keyData & Keys.KeyCode;
if (keys1 == Keys.Return)
{
return this.acceptsReturn;
}
}
return base.IsInputKey(keyData);
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Collections;namespace treeViewApp
{
public partial class UserControl1 : RichTextBox
{
public UserControl1()
{
InitializeComponent();
} protected override bool ProcessDialogKey(Keys keyData)
{
if (((keyData & Keys.Control) == Keys.Control))
{
Keys keys1 = keyData & Keys.KeyCode;
if (keys1 == Keys.Return)
{
return true;
}
}
return base.ProcessDialogKey(keyData);
}
}
}