C#记事本问题 本人正在用C#仿做Windows的记事本。有一个效果做不出来,就是鼠标停在那里,记事本的状态栏能显示出正确的几行几列。请问这个效果要怎么做,会用到哪些知识点。希望,有好心人帮帮,做了好久都没弄出来。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 由onmousedown事件触发获取光标所在处的位置 你是说用鼠标框起来,然后右下角显示出来横竖坐标的那种吧,location,查查相关函数,我记得以前做那个鼠标位置的时候都显示出来了 可以读取记事本里面的行和列啊读取的值赋给一个label 用label来显示 http://hi.baidu.com/51yi/blog/item/fa91a701e62ae9dc267fb55d.html using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace Mickey记事本{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } // 用于存储当前操作的文件的名称 private string textFileName = ""; private string filePath = ""; private void 新建_Click(object sender, EventArgs e) { textFileName = ""; // 新建一个文本时,若输入框中的内容不为空,应先提示“是否保存” if (inputInfo.Text != string.Empty) { // 若用户选择“是”,应弹出保存文件的对话框 if (MessageBox.Show("是否保存当前文件?", "Mickey温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information) == DialogResult.Yes) { // 保存文件 Save(); Text = "新建-Mickey记事本"; inputInfo.Text = ""; } else if (MessageBox.Show("是否保存当前文件?", "Mickey温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information) == DialogResult.No) { // 用户选择不保存时将输入框中的内容清除 inputInfo.Text = ""; } } } private void 打开_Click(object sender, EventArgs e) { OpenFileDialog openFile = new OpenFileDialog(); openFile.Filter = "文本文件(*.txt)|*.txt"; if (openFile.ShowDialog() == DialogResult.OK) { StreamReader sr = new StreamReader(openFile.FileName); inputInfo.Text = sr.ReadToEnd(); sr.Close(); FileInfo fileInfo = new FileInfo(openFile.FileName); // 把标题改为打开的文件的名称 Text = "*" + fileInfo.Name + "-Mickey记事本"; textFileName = fileInfo.Name; } } private void 保存_Click(object sender, EventArgs e) { Save(); } // “保存” private void Save() { if (!textFileName.Equals("")) { SaveFileDialog saveFile = new SaveFileDialog(); // 默认保存格式 saveFile.Filter = "文本文件(*.txt)|*.txt"; StreamWriter sw = new StreamWriter(filePath, false); sw.Write(inputInfo.Text); sw.Close(); MessageBox.Show("文件保存成功!", "Mickey温馨提示"); filePath = saveFile.FileName; // 把标题改为打开的文件的名称 Text = textFileName + "-Mickey记事本"; } else { // 成员变量为“”,说明文件第一次保存,执行“另存为”操作 HoldFile(); } } private void HoldFile() { // 若用户选择另保存文件 SaveFileDialog saveFile = new SaveFileDialog(); // 默认保存格式 saveFile.Filter = "文本文件(*.txt)|*.txt"; if (saveFile.ShowDialog() == DialogResult.OK) { StreamWriter sw = new StreamWriter(saveFile.FileName, false); sw.WriteLine(inputInfo.Text); sw.Close(); MessageBox.Show("文件保存成功!", "Mickey温馨提示"); filePath = saveFile.FileName; } // 判断是第一次保存还是第二次 if (textFileName.Equals("")) { FileInfo fileInfo = new FileInfo(saveFile.FileName); Text = fileInfo.Name + "-Mickey记事本"; textFileName = fileInfo.Name; } else { // 把标题改为打开的文件的名称 Text = textFileName + "-Mickey记事本"; } } private void 另存为_Click(object sender, EventArgs e) { HoldFile(); } private void 页面设置_Click(object sender, EventArgs e) { this.pageSetupDialog1.Document = this.printDocument1; pageSetupDialog1.ShowDialog(); } private void 打印_Click(object sender, EventArgs e) { if (inputInfo.Text.Length < 1) { MessageBox.Show("请确保要打印的文件的内容不为空!", "Mickey温馨提示"); return; } else { // 设置Document的属性 this.printDialog1.Document = this.printDocument1; this.printDialog1.PrinterSettings = this.pageSetupDialog1.PrinterSettings; if (this.printDialog1.ShowDialog() == DialogResult.OK) { try { this.printDocument1.Print(); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } private void 退出_Click(object sender, EventArgs e) { // 退出时应提示用户是否保存当前文本文件 DialogResult result = MessageBox.Show("是否将更改保存?", "Mickey温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information); if (result == DialogResult.Yes) { Save(); Application.Exit(); } else if (result == DialogResult.No) { Application.Exit(); } } // 这个成员变量用来存储用户选择进行操作的字符串 private string selectedInfo = ""; private void 编辑_Click(object sender, EventArgs e) { if ((inputInfo.SelectedText.Equals("")) && (selectedInfo.Equals(""))) { 剪切.Enabled = false; 复制.Enabled = false; 粘贴.Enabled = false; 删除.Enabled = false; } else { 剪切.Enabled = true; 复制.Enabled = true; 粘贴.Enabled = true; 删除.Enabled = true; } } private void 撤销_Click(object sender, EventArgs e) { this.inputInfo.Undo(); } private void 剪切_Click(object sender, EventArgs e) { selectedInfo = inputInfo.SelectedText; this.inputInfo.Cut(); } private void 复制_Click(object sender, EventArgs e) { this.inputInfo.Copy(); } private void 粘贴_Click(object sender, EventArgs e) { this.inputInfo.Paste(); } private void 删除_Click(object sender, EventArgs e) { this.inputInfo.SelectedText = ""; } private void 查找_Click(object sender, EventArgs e) { if (inputInfo.Text == string.Empty) { MessageBox.Show("请确保要查找的文件的内容不为空!", "Mickey温馨提示"); } else { //Form2 fr2 = new Form2(); //fr2.sender(this); //fr2.Show(); } } private void 查找下一个_Click(object sender, EventArgs e) { } private void 全选_Click(object sender, EventArgs e) { this.inputInfo.SelectAll(); //全选_Click(sender,e); } private void 时间日期_Click(object sender, EventArgs e) { inputInfo.Text += "现在时间是:" + DateTime.Now.ToString(); } private void 自动换行_Click(object sender, EventArgs e) { if (自动换行.Checked == true) { inputInfo.WordWrap = true; } else { inputInfo.WordWrap = false; } } private void 字体_Click(object sender, EventArgs e) { FontDialog fontDialog = new FontDialog(); if (fontDialog.ShowDialog() == DialogResult.OK) { inputInfo.Font = fontDialog.Font; } } private void 查看_Click(object sender, EventArgs e) { if (inputInfo.Text.Length > 0) { 状态栏.Enabled = true; } else { 状态栏.Enabled = false; } } private void 状态栏_Click(object sender, EventArgs e) { if (状态栏.Checked == true) { 状态栏.Checked = false; statusStrip1.Visible = false; } else { 状态栏.Checked = true; statusStrip1.Visible = true; } } private void 查看帮助_Click(object sender, EventArgs e) { string help = @"C:Users狗狗MickeyDesktophelp.txt"; Help.ShowHelp(this, help); } private void 关于记事本_Click(object sender, EventArgs e) { AboutBox1 about = new AboutBox1(); about.Show(); } }} 其实就是通过API发送消息获取,并不是很难。 jsion 字符串的值,最长可以是多少个字符 winfrom控件坐标定位 请问接口成员定义与类成员定义有一个区别。 sqldatareader的问题~~ 帮忙找错! 关于usbkey的问题 C# winform 在主窗体上的右下角显示提示消息框,类似于QQ提醒新闻 请问焦点的问题 我要进行byte类型的异或,靠c#居然^只有bool、int好用,我怎么办啊? BETA2里如果想override一个event应该怎么写? 怎么让axWindowsMediaPlayer循环播放音乐? windows Media Player的那些事、
获取光标所在处的位置
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace Mickey记事本
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} // 用于存储当前操作的文件的名称
private string textFileName = "";
private string filePath = ""; private void 新建_Click(object sender, EventArgs e)
{ textFileName = "";
// 新建一个文本时,若输入框中的内容不为空,应先提示“是否保存”
if (inputInfo.Text != string.Empty)
{ // 若用户选择“是”,应弹出保存文件的对话框
if (MessageBox.Show("是否保存当前文件?", "Mickey温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)
== DialogResult.Yes)
{
// 保存文件
Save();
Text = "新建-Mickey记事本";
inputInfo.Text = "";
}
else if (MessageBox.Show("是否保存当前文件?", "Mickey温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)
== DialogResult.No)
{
// 用户选择不保存时将输入框中的内容清除
inputInfo.Text = "";
}
}
}
private void 打开_Click(object sender, EventArgs e)
{
OpenFileDialog openFile = new OpenFileDialog();
openFile.Filter = "文本文件(*.txt)|*.txt";
if (openFile.ShowDialog() == DialogResult.OK)
{
StreamReader sr = new StreamReader(openFile.FileName);
inputInfo.Text = sr.ReadToEnd();
sr.Close(); FileInfo fileInfo = new FileInfo(openFile.FileName);
// 把标题改为打开的文件的名称
Text = "*" + fileInfo.Name + "-Mickey记事本"; textFileName = fileInfo.Name;
}
}
private void 保存_Click(object sender, EventArgs e)
{
Save();
}
// “保存”
private void Save()
{
if (!textFileName.Equals(""))
{
SaveFileDialog saveFile = new SaveFileDialog();
// 默认保存格式
saveFile.Filter = "文本文件(*.txt)|*.txt"; StreamWriter sw = new StreamWriter(filePath, false);
sw.Write(inputInfo.Text);
sw.Close();
MessageBox.Show("文件保存成功!", "Mickey温馨提示");
filePath = saveFile.FileName; // 把标题改为打开的文件的名称
Text = textFileName + "-Mickey记事本"; }
else
{
// 成员变量为“”,说明文件第一次保存,执行“另存为”操作
HoldFile();
}
}
private void HoldFile()
{ // 若用户选择另保存文件
SaveFileDialog saveFile = new SaveFileDialog();
// 默认保存格式
saveFile.Filter = "文本文件(*.txt)|*.txt";
if (saveFile.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(saveFile.FileName, false);
sw.WriteLine(inputInfo.Text);
sw.Close();
MessageBox.Show("文件保存成功!", "Mickey温馨提示");
filePath = saveFile.FileName;
}
// 判断是第一次保存还是第二次
if (textFileName.Equals(""))
{
FileInfo fileInfo = new FileInfo(saveFile.FileName);
Text = fileInfo.Name + "-Mickey记事本";
textFileName = fileInfo.Name;
}
else
{
// 把标题改为打开的文件的名称
Text = textFileName + "-Mickey记事本";
}
}
private void 另存为_Click(object sender, EventArgs e)
{
HoldFile();
}
private void 页面设置_Click(object sender, EventArgs e)
{
this.pageSetupDialog1.Document = this.printDocument1;
pageSetupDialog1.ShowDialog();
}
private void 打印_Click(object sender, EventArgs e)
{
if (inputInfo.Text.Length < 1)
{
MessageBox.Show("请确保要打印的文件的内容不为空!", "Mickey温馨提示");
return;
}
else
{
// 设置Document的属性
this.printDialog1.Document = this.printDocument1; this.printDialog1.PrinterSettings = this.pageSetupDialog1.PrinterSettings; if (this.printDialog1.ShowDialog() == DialogResult.OK)
{
try
{
this.printDocument1.Print();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
private void 退出_Click(object sender, EventArgs e)
{
// 退出时应提示用户是否保存当前文本文件
DialogResult result = MessageBox.Show("是否将更改保存?", "Mickey温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);
if (result == DialogResult.Yes)
{
Save();
Application.Exit();
}
else if (result == DialogResult.No)
{
Application.Exit();
}
} // 这个成员变量用来存储用户选择进行操作的字符串
private string selectedInfo = "";
private void 编辑_Click(object sender, EventArgs e)
{
if ((inputInfo.SelectedText.Equals("")) && (selectedInfo.Equals("")))
{
剪切.Enabled = false;
复制.Enabled = false;
粘贴.Enabled = false;
删除.Enabled = false;
}
else
{
剪切.Enabled = true;
复制.Enabled = true;
粘贴.Enabled = true;
删除.Enabled = true;
}
}
private void 撤销_Click(object sender, EventArgs e)
{
this.inputInfo.Undo();
} private void 剪切_Click(object sender, EventArgs e)
{
selectedInfo = inputInfo.SelectedText;
this.inputInfo.Cut();
} private void 复制_Click(object sender, EventArgs e)
{
this.inputInfo.Copy();
} private void 粘贴_Click(object sender, EventArgs e)
{
this.inputInfo.Paste();
} private void 删除_Click(object sender, EventArgs e)
{
this.inputInfo.SelectedText = "";
}
private void 查找_Click(object sender, EventArgs e)
{
if (inputInfo.Text == string.Empty)
{
MessageBox.Show("请确保要查找的文件的内容不为空!", "Mickey温馨提示");
}
else
{
//Form2 fr2 = new Form2();
//fr2.sender(this);
//fr2.Show();
}
} private void 查找下一个_Click(object sender, EventArgs e)
{ }
private void 全选_Click(object sender, EventArgs e)
{
this.inputInfo.SelectAll();
//全选_Click(sender,e);
} private void 时间日期_Click(object sender, EventArgs e)
{
inputInfo.Text += "现在时间是:" + DateTime.Now.ToString(); }
private void 自动换行_Click(object sender, EventArgs e)
{
if (自动换行.Checked == true)
{
inputInfo.WordWrap = true;
}
else
{
inputInfo.WordWrap = false;
}
}
private void 字体_Click(object sender, EventArgs e)
{
FontDialog fontDialog = new FontDialog();
if (fontDialog.ShowDialog() == DialogResult.OK)
{
inputInfo.Font = fontDialog.Font;
}
}
private void 查看_Click(object sender, EventArgs e)
{
if (inputInfo.Text.Length > 0)
{
状态栏.Enabled = true;
}
else
{
状态栏.Enabled = false;
}
}
private void 状态栏_Click(object sender, EventArgs e)
{
if (状态栏.Checked == true)
{
状态栏.Checked = false;
statusStrip1.Visible = false;
}
else
{
状态栏.Checked = true;
statusStrip1.Visible = true;
}
}
private void 查看帮助_Click(object sender, EventArgs e)
{
string help = @"C:Users狗狗MickeyDesktophelp.txt";
Help.ShowHelp(this, help);
}
private void 关于记事本_Click(object sender, EventArgs e)
{
AboutBox1 about = new AboutBox1();
about.Show();
}
}
}