文件TEXTBOX

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 文件名

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

winTextBox1.LostFocus += new EventHandler(winTextBox1_LostFocus);

}

//重命名选中的项目

private void winTextBox1_LostFocus(object sender, EventArgs e)

{

//文件不能存在

//_files和_attachments不能存在

int index = listBox1.Items.IndexOf(winTextBox1.Text);

int i = listBox1.SelectedIndex;

if (i == -1)

return;

if (index == -1)

listBox1.Items[i] = winTextBox1.Text;

else

winTextBox1.Text = (string)listBox1.Items[i];

}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

{

int i = listBox1.SelectedIndex;

if (i != -1 && !winTextBox1.Focused)

winTextBox1.Text = (string)listBox1.Items[i];

Text = i.ToString();

}

}

}


/*

移掉非法字符

WIN8的文件重命名 符合以下条件才会被重命名

文件名不能包含以下字符

\\ / : * ? " < > |

WIN8的文件重命名 隐藏功能

1 当在键盘上按非法字符的按键时,textBox是没反映的

2 当按CTRL+V键时,textBox只粘贴  剪切板中的非法字符 被 去掉后的字符串

3 当使用右键快捷菜单 粘贴的时候  剪切板中的非法字符 被 去掉后的字符串

4 当使用输入法输入带有非法字符时 非法字符也会被去掉

5 当光标失去焦点时   当输入的文件名称 为空字符时 textBox会将名称变成 上次名称不为空的字符

6 当光标失去焦点时   名称的结尾为英文点号.  点号会被移除

7 textBox会自动移掉文件名的 开头和结尾的空格

8 按Enter自动 执行步骤6

2014年7月9日11:03:32 BY roman

*/

namespace System.Windows.Forms

{

public class WinTextBox : TextBox

{

//文件名非法字符

private char[] invalidChar = new char[] { ‘\\‘, ‘/‘, ‘:‘, ‘*‘, ‘?‘, ‘"‘, ‘<‘, ‘>‘, ‘|‘ };

/// <summary>

/// 最后一次不为空的字符串

/// </summary>

public string LAST = "";

private string RemoveInvalidChar(string objText)

{

//移除非法字符"\\/:*?\"<>|"

objText = objText.Replace("\\", "");

objText = objText.Replace("/", "");

objText = objText.Replace(":", "");

objText = objText.Replace("\"", "");

objText = objText.Replace("*", "");

objText = objText.Replace("?", "");

objText = objText.Replace("/", "");

objText = objText.Replace("<", "");

objText = objText.Replace(">", "");

objText = objText.Replace("|", "");

return objText;

}

protected override void WndProc(ref Message m)

{

//WM_PASTE

if (m.Msg == 0x302 && Clipboard.ContainsText())

{

this.SelectedText = RemoveInvalidChar(Clipboard.GetText());

this.SelectionStart = this.Text.Length;

return;

}

base.WndProc(ref m);

}

protected override void OnKeyPress(KeyPressEventArgs e)

{

if (e.KeyChar == 13)

{

OnLostFocus(e);

}

e.Handled = (this.Text.IndexOfAny(invalidChar) != -1);

base.OnKeyPress(e);

}

protected override void OnTextChanged(EventArgs e)

{

if (this.Text.IndexOfAny(invalidChar) != -1)

{

this.Text = RemoveInvalidChar(this.Text);

this.SelectionStart = this.Text.Length;

}

if (Text.Trim() != "")

LAST = Text;

base.OnTextChanged(e);

}

protected override void OnLostFocus(EventArgs e)

{

string s = this.Text;

//移动最后的.号 移除空格

if (s.Trim() == ".")

s = "";

while (s.Trim().EndsWith("."))

{

s = s.Remove(s.Length - 1, 1);

}

this.Text = s.Trim();

if (this.Text.Trim() == "")

this.Text = LAST;

base.OnLostFocus(e);

}

}

}

来自为知笔记(Wiz)

文件TEXTBOX

时间: 2024-10-26 19:37:40

文件TEXTBOX的相关文章

C#中使用Log4net日志输出到本地文件、Textbox或Listview

网上很多配置log4net的方法,但是排行靠前的 根本就没有说明清除,导致浪费了两个小时来搞清楚如何配置,真是无语,特写此文,给那些刚接触log4net的朋友 1.参考链接:http://blog.sina.com.cn/s/blog_642e41c201014pml.html 此方法是直接将配置文件配置在app.config <configSections> <!--在配置选项中加入log4net的引用--> <section name="log4net"

传智播客--数据绑定--INotifyPropertyChanged

INotifyPropertyChanged一般在数据绑定的时候使用. InotifyPropertyChanged是.net内置的接口,数据绑定时会检测DataContext是否实现了InotifyPropertyChanged,如果实现了,就会监听PropertyChanged,得知属性变化. 可以理解为InotifyPropertyChanged接口用于向客户端发出某一属性值已更改的通知. 类 class Person:INotifyPropertyChanged { private in

最佳vim技巧

最佳vim技巧----------------------------------------# 信息来源----------------------------------------www.vim.org         : 官方站点comp.editors        : 新闻组http://www.newriders.com/books/opl/ebooks/0735710015.html : Vim书籍http://vimdoc.sourceforge.net/cgi-bin/vim

解决WPF中TextBox文件拖放问题

在WPF中,当我们尝试向TextBox中拖放文件,从而获取其路径时,往往无法成功(拖放文字可以成功).造成这种原因关键是WPF的TextBox对拖放事件处理机制的不同,具体可参考这篇文章Textbox Drag/Drop in WPF,本文只是介绍如何解决这一问题. 解放方法如下: 使用PreviewDragOver和PreviewDrop事件代替DragOver和Drop事件. <TextBox Height="100″ PreviewDragOver="TextBox_Pre

Wpf解决TextBox文件拖入问题、拖放问题

在WPF中,当我们尝试向TextBox中拖放文件,从而获取其路径时,往往无法成功(拖放文字可以成功).造成这种原因关键是WPF的TextBox对拖放事件处理机制的不同, 解放方法如下: 使用PreviewDragOver和PreviewDrop事件代替DragOver和Drop事件. <TextBox Height="100" PreviewDragOver="TextBox_PreviewDragOver" PreviewDrop="TextBox

WPF中textbox加入文件拖放操作

namespace WpfApplication1{ public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void textbox1_PreviewDragOver(object sender, DragEventArgs e) { e.Effects = DragDropEffects.Copy; e.Handled = true; } private

c#保存textbox中的字符串到txt文件中

/********************** 保存接收按钮 *****************************/ private void SavetxData_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "(*.txt)|*.txt|(*.*)|*.*"; saveFileDialog.Fil

c#打开txt文件并导入到textbox中

OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Title = " 请选择您要导入的模板文件:"; openFileDialog.Filter = "TextDocument(*.txt)|*.txt|TextDocument(*.ini)|*.ini"; openFileDialog.ShowDialog(); if (openFileDialog.FileName != &

C#WinForm 用textbox与button控件,向xml文件中增加新的数据

1 旧的xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <datas> 3 <XianJia> 4 <ShengHao>女娲娘娘</ShengHao> 5 <Password>nwnn</Password> 6 </XianJia> 7 <XianJia> 8 <ShengHao>后土娘娘</Sh