本人正在用C#仿做Windows的记事本。有一个效果做不出来,
就是鼠标停在那里,记事本的状态栏能显示出正确的几行几列。
请问这个效果要怎么做,会用到哪些知识点。
希望,有好心人帮帮,做了好久都没弄出来。

解决方案 »

  1.   

    由onmousedown事件触发
    获取光标所在处的位置
      

  2.   

    你是说用鼠标框起来,然后右下角显示出来横竖坐标的那种吧,location,查查相关函数,我记得以前做那个鼠标位置的时候都显示出来了
      

  3.   

    可以读取记事本里面的行和列啊读取的值赋给一个label  用label来显示
      

  4.   

    http://hi.baidu.com/51yi/blog/item/fa91a701e62ae9dc267fb55d.html
      

  5.   

    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();
            }
        }
    }
      

  6.   

    其实就是通过API发送消息获取,并不是很难。