winform中如何获得TextBox光标位置

合集下载

C#设置WinForm快捷键textbox也可以由此设置快捷键

C#设置WinForm快捷键textbox也可以由此设置快捷键

C#设置WinForm快捷键textbox也可以由此设置快捷键1、Alt+*(按钮快捷键)按钮快捷键也为最常⽤快捷键,其设置也故为简单。

在⼤家给button、label、menuStrip等其他控件的Text属性指定名称时,在其后⾯加上‘&’然后在加上⼀个指定字母即可。

如:确定(&D),(Alt+D)调⽤。

如指定多个字母,则第⼀个为快捷键。

如:确定(&OK),(Alt+O)调⽤;⽂件(&Fill),(Alt+F)调⽤。

2、Ctrl+*及其他组合键把 Form 的 KeyPreview 属性设为 True使⽤Modifiers可设置组合键,键盘数字区按键的Keys枚举以D打头,⽽⼩键盘上的数字以NumPad打头。

按下Ctrl与Shift组合键的⽅法与其类似,将Ctrl和Alt的枚举转换为int型相加后与Modifiers对⽐,这样即可判断是否按下了该组合键。

private void frmMain_KeyDown(object sender, KeyEventArgs e){//⽐如你的窗体名是frmMain,确定按钮btnOK,保存按钮btnSave//单键switch (e.KeyCode){case Keys.F1:btnOK_Click(this, EventArgs.Empty);break;case Keys.F2:btnSave_Click(this, EventArgs.Empty);break;}// 组合键if (e.KeyCode == Keys.F1 && e.Modifiers == Keys.Control) //Ctrl+F1{btnShouYi_Click(this, EventArgs.Empty);}if ((int)e.Modifiers == ((int)Keys.Control + (int)Keys.Alt) && e.KeyCode == Keys.D0) //Ctrl + Alt + 数字0{MessageBox.Show("按下了Control + Alt + 0");}另外的,与窗体的AcceptButton属性相关联的按钮,将与键盘上的Enter键对应;与窗体的CancelButton属性相关联的按钮,将与键盘上的Ecs键对应。

winform richtextbox使用

winform richtextbox使用

winform richtextbox使用下面是一个关于使用WinForm RichTextBox 控件的1500-2000 字的文章。

WinForm RichTextBox 使用指南引言WinForm 是一个功能强大的桌面应用程序开发框架,它提供了许多可视化控件来帮助开发人员快速构建应用程序。

其中之一就是RichTextBox 控件,它允许我们在应用程序中创建和编辑格式化文本。

本文将详细介绍如何使用WinForm RichTextBox 控件,并提供一些实用的示例来帮助您更好地理解。

什么是WinForm RichTextBox 控件?WinForm RichTextBox 控件是一个可用于显示和编辑文本的控件。

与标准文本框控件相比,它具有更多的功能,例如可以支持不同的字体、字号和颜色,还可以插入图片和超链接等。

它是一个非常灵活和强大的工具,可以满足各种文本编辑需求。

1. 创建一个WinForm 应用程序首先,我们需要创建一个新的WinForm 应用程序来使用RichTextBox 控件。

打开Visual Studio,并选择新建项目。

在弹出的对话框中选择“Windows 应用程序”模板,然后点击“下一步”。

在下一个对话框中,输入应用程序的名称并选择一个保存位置。

最后,点击“创建”按钮,即可创建一个新的WinForm 应用程序。

2. 在窗体上添加RichTextBox 控件一旦应用程序创建完成,我们可以在窗体上添加RichTextBox 控件。

在Visual Studio 的设计器中打开窗体,然后从工具箱中拖动一个RichTextBox 控件到窗体上的合适位置。

3. 设置RichTextBox 控件的属性-在设计时,我们可以通过设置控件的各种属性来自定义RichTextBox 控件的外观和行为。

例如,我们可以设置控件的Name 属性,以便在代码中引用它。

我们还可以设置控件的大小和位置,以确保它适合窗体布局。

HTML中获取、指定textarea中光标和选区的位置

HTML中获取、指定textarea中光标和选区的位置

HTML中获取、指定光标、选区位置
关于HTML中获取textare标签内文本的光标位置其实很简单,只需要几句javascript就可以搞定了。

首先是获取控件:
var textbox = document.getElementById("id");
然后是拉黑部分的起始位置(注意,换行符也算一个,不管中文英文都只算一个,如果输入框丢失焦点,则为零),如果没有拉黑,则为光标当前位置:
textbox.selectionStart
那么,只要你不是脑残,都能推理出,结束位置是这样,同理没拉黑则为光标当前位置:
textbox.selection End
下面是设置光标位置:
先创建一个rang作为选取范围:
var range = textbox.createTextRange();
然后是指定选区起始位置:
range.moveStart('character', 2);
↑不要问我2代表什么。

接着指定选区长度,注意,不是结束位置,是长度!长度!同理,不管中文英文换行符通通都是一个单位
range.moveEnd('character', 5);
↑如果不需要拉黑,只需要设置光标位置,把后面那个参数改成0就可以了。

最后,通过这个range选择文本:
range.select();。

winform中获得鼠标点击点的光标位置

winform中获得鼠标点击点的光标位置
{
this.Text = e.Location.ToString();
}
Keesés afómokban: 如题,C#2008获取点击PicteBox控件时在PicteBox中的坐标值,需要把这个坐标值传递给其他函数使用,谢谢!我需要的是在PicteBox控件里的坐标值。我需要先给出个提示消息,确定之后再点击图像,但是这个过程怎么才可以使程序等待我点击PicteBox控件呢?我尝试用了MoseCick()事件,但是不行。Váaszokpivate void picteBox1_MoseMove(object sende,MoseEventAgs e){int oiginaWidth=this.picteBox1.Image.Width;int oiginaHeight=this.picteBox1.Image.Height;PopetyInfo ectangePopety=this.picteBox1.GetType().GetPopety(&qot;ImageRectange&qot;,BindingFags.Instance|BindingFags.NonPbic);Rectange ectange=(Rectange)ectangePopety.GetVae(this.picteBox1,n);int centWidth=ectange.Width;int centHeight=ectange.Height;dobe ate=(dobe)centHeight(dobe)oiginaHeight;int back_eft_width=(centWidth==this.picteBox1.Width)?0:(this.picteBox1.Width-centWidth)2;int back_top_height=(centHeight==this.picteBox1.Height)?0:(this.picteBox1.Height-centHeight)2;int zoom_x=e.X-back_eft_width;int zoom_y=e.Y-back_top_height;dobe oigina_x=(dobe)zoom_x*ate;dobe oigina_y=(dobe)zoom_y*ate;StingBide sb=new StingBide();sb.AppendFomat(&qot;原始尺寸{0}{1}(宽高)\\n&qot;,oiginaWidth,oiginaHeight);sb.AppendFomat(&qot;缩放状态图片尺寸{0}{1}(宽高)\\n&qot;,centWidth,centHeight);sb.AppendFomat(&qot;缩放比率{0}\\n&qot;,ate);sb.AppendFomat(&qot;左留白宽度{0}\\n&qot;,back_eft_width);sb.AppendFomat(&qot;上留白高度{0}\\n&qot;,back_top_height);sb.AppendFomat(&qot;当前鼠标坐标{0}{1}(XY)\\n&qot;,e.X,e.Y);sb.AppendFomat(&qot;缩放图中鼠标坐标{0}{1}(XY)\\n&qot;,zoom_x,zoom_y);sb.AppendFomat(&qot;原始图中鼠标坐标{0}{1}(XY)\\n&qot;,oigina_x,oigina_y);this.abe1.Text=sb.ToSting();}Megjete váaszként:pcx2010.agszts 31.13:21Az sszes váaszMoseCick事件中事件参数MoseEventAgs中可以获取X,Y坐标。pivate void picteBox1_MoseCick(object sende,MoseEventAgs e){点击时记录坐标int x=e.X;int y=e.Y;if(MessageBox.Show(&qot;你确定吗?&qot;,&qot;提示&qot;,MessageBoxBttons.YesNo,MessageBoxIcon.Qestion)==DiaogRest.Yes){执行你的方法,无须模拟鼠标动作YoMethod(x,y);}}但是我需要的是先提示我点击鼠标,确定之后我再点击PicteBox控件。不是点击之后在确定啊,因为是做在一个菜单下,我点击菜单之后需要有提示我才点击了。2010.agszts 20.2:24 feiyn0112MVP,Modeátomsemove事件判断坐标,提示tootip但是这个仍然不是我所希望和需要的啊?麻烦各位帮我解答下,谢谢!你再把你的问题说清楚点吧!这样才好帮助你。知识改变命运,奋斗成就人生!我的想法是这样的,我在窗体中有一个PicteBox控件,我需要获取我鼠标点击这个控件时的坐标值,但是这个坐标值的话我又想换为这个控件中图像的图像坐标值,也就是图像的x,y值。我这个PicteBox控件的sizemode属性设置为zoom方式,请问该怎么样才可以实现呢?有没有好的解决办法呢?如果你是想将点击缩放后图片的坐标值换为图片正常尺寸的坐标值,那么你需要将图片的缩放比例算出来就行了。正常值=图片绽放状态的坐标值*缩放比例知识改变命运,奋斗成就人生!但是如果我这个图片不是恰好的正常缩放情况下填充满整个PicteBox控件的话,那怎么知道这个坐标换到图片上去的坐标值呢?还有就是这个图片的缩放比例改怎么样获得呢?谢谢当前显示的尺寸图片原始尺寸=绽放比例。如果图片正好用原始尺寸显示在pictebox中,那么缩放比例为1。知识改变命运,奋斗成就人生!但是这个当前显示的尺寸怎么获取呢?如果我获取图片的width和height那是原始大小了?但如果获取PicteBox的大小的话,如果图片缩放后不是完全填充PicteBox控件空间的话那怎么获得图片大小呢?谢谢!2010Micosoft Copoation.Minden jog fenntatva.

WPF自定义文本框输入法IME跟随光标

WPF自定义文本框输入法IME跟随光标

WPF⾃定义⽂本框输⼊法IME跟随光标本⽂告诉⼤家在 WPF 写⼀个⾃定义的⽂本框,如何实现让输⼊法跟随光标本⽂⾮⼩⽩向,本⽂适合想开发⾃定义的⽂本框,从底层开始开发的⽂本库的伙伴。

在开始之前,期望了解了⽂本库开发的基础知识本⽂实现的效果如下实现本⽂的⽅法参考了的逻辑,可以在WPF 仓库的wpf\src\Microsoft.DotNet.Wpf\src\PresentationFramework\System\Windows\Documents\ImmComposition.cs⽂件看到官⽅是如何让TextBox 控件获取输⼊法焦点,和在输⼊光标变更时,修改输⼊法的输⼊框坐标先了解⼀下输⼊法的相关知识。

在 Windows 编程开发⾥,输⼊法框架有三套,其中⽤的最多的是第⼆套。

第⼆套是采⽤ IMM 进⾏对接的。

所谓 IMM 就是 Input Method Manager 也就是输⼊法管理器相关的另⼀个缩写词 IME 则是 Input Method Editor 或者是 Input Method Engine 的缩写,含义是输⼊法编辑器或输⼊法引擎应⽤程序可以通过 IMM 对接输⼊法。

所⽤的 win32 的 API 重点是如下⼏个ImmGetContext 获取输⼊法上下⽂,⽤于后续所有的其他函数调⽤ImmAssociateContext 关联输⼊法和对应的窗⼝,让输⼊法了解在哪个窗⼝输⼊ImmSetCompositionWindow ⽤来设置输⼊法的窗⼝的坐标,也是本⽂最重要的函数本⽂接下来将告诉⼤家如何⼀步步实现封装对 IME 输⼊法调⽤,在本⽂最后将会给出所有的源代码这部分对输⼊法的逻辑可以封装为⼀个类,这样上层就可以不关注细节逻辑。

如例⼦代码,放在 IMESupporter 类型⾥为了⽅便⽂本框的接⼊,咱再定义⼀个接⼝,⽤于设置⽂本框需要实现⼀些⽅法,⽤来提供参数给 IMESupporter 使⽤才能进⾏接⼊/// <summary>/// 表⽰控件⽀持被输⼊法/// </summary>interface IIMETextEditor{/// <summary>/// 获取当前使⽤的字体名/// </summary>/// <returns></returns>string GetFontFamilyName();/// <summary>/// 获取字号⼤⼩,单位和 WPF 的 FontSize 相同/// </summary>/// <returns></returns>int GetFontSize();/// <summary>/// 获取输⼊框的左上⾓的点,⽤于设置输⼊法的左上⾓。

C#学习笔记——回车Enter使输入焦点自动跳到下一个TextBox

C#学习笔记——回车Enter使输入焦点自动跳到下一个TextBox

C#学习笔记——回车Enter使输⼊焦点⾃动跳到下⼀个TextBox在录⼊界⾯中,⽤户往往需要按回车键时光标⾃动跳⼊下⼀个⽂本框,以⽅便录⼊操作。

在C#中实现该功能有多种⽅法,以下是⼩编收集的不使⽤TAB键,⽽直接⽤回车键将光标转到下⼀个⽂本框的实现⽅法。

⼀、利⽤Windows消息模拟发送Tab键将各个TextBox的TabIndex属性按顺序编号1、2、3……,然后将TextBox的TabStop属性置为True,在每⼀个TextBox的键盘按下事件中,执⾏以下代码即可(各个TextBox可共⽤同⼀个键盘按下事件)。

/// <summary>/// ⿏标按键事件。

/// 如果检查到按下的是回车键,则发⼀个消息,模拟键盘按以下Tab键,以使输⼊焦点转移到下⼀个⽂本框(或其他焦点可停留的控件)/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void textBox_KeyPress(object sender, KeyPressEventArgs e){if (e.KeyChar == (char)Keys.Enter){SendKeys.Send("{tab}");}}⼆、⼿动置下⼀个需要获取焦点的⽂本框如果想让焦点跳到任意⽂本框或者其他地⽅, 在⽂本框的键盘按下事件中,将焦点放到⽬标⽂本框上。

private void textBox1_KeyPress(object sender, KeyPressEventArgs e){if (e.KeyChar == (char)Keys.Enter){textBox2.focus(); //当在⽂本框1中检查到回车键时,直接将焦点转⼊TextBox2}}三、利⽤控件的SelectNextControl函数按⽅法⼀中设置好TextBox的TabIndex和TabStop属性,在C# 回车Enter事件中,调⽤控件的SelectNextControl函数,是的输⼊焦点跳到下⼀个TextBox(⽂本框)。

关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法

关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法
{
//指定的一个信息,将用于填写TextBoxFileName。
m_fileName = fileName;
//指定的URL
m_host = hostUrl;
}
public bool SendCompleteMessage(string user,string password)
writeStream.Close();
//下载回应消息。
string serverMessage = "";
try
{
response1 = request1.GetResponse();
//这里的response1是Server在Button点击后跳转到的另一个页面,这个页面有一个值表示是否成功
tempData.Append(HttpUtility.UrlEncode(aspValue));
//填写TextBoxFileName的值,其值见后
tempData.Append("&TextBoxFileName=");
tempData.Append("(content1)");
{
//得到页面数据段
aspValue = content.Substring(index,endIndex-index);
StringBuilder tempData = new StringBuilder();
tempData.Append("__VIEWSTATE=");
}
serverMessage = hehe1.ToString();
}
catch(Exception E)

C#WINFORM限制TEXTBOX只能输入数字

C#WINFORM限制TEXTBOX只能输入数字

C#Winform限制Textbox只能输入数字分类: C# 2013-01-09 16:09 6012人阅读评论(0) 收藏举报在Winform(C#)中要实现限制Textbox只能输入数字,一般的做法就是在按键事件中处理,判断keychar的值。

限制只能输入数字,小数点,Backspace,del这几个键。

数字0~9所对应的keychar为48~57,小数点是46,Backspace是8。

拖一个Textbox到窗体上,添加OnKeyPress事件,在事件写判断的代码,只要判断不是这些键,设置e.Handled的值为true,就可以屏蔽输入。

1.判断是否为数字或Backspace,按下面这样写的话只能输入数字和Backspace,所以还得给代码添加些条件,还要能够输入小数点。

[csharp] view plaincopy 1. private void textBox1_KeyPress(object sender, KeyPressEventArgs e)2. {3. try4. {5. int kc = (int)e.KeyChar;6. if ((kc &lt; 48 || kc &gt; 57) &amp;&amp; kc != 8)7. e.Handled = true;8. }9. catch (Exception)10. {11. }12.13. }2.输入小数点。

输入的小数要符合数字的格式,类似9.9.9这样的是不能够输入的。

做法就是用float.TryParse来转换Textbox中之前和之后的值,然后比较两者的转换结果。

具体的代码如下:[csharp] view plaincopy1. if (kc == 46) //小数点2. {3. if (txtMoney.Text.Length &lt;= 0)4. e.Handled = true; //小数点不能在第一位5. else6. {。

winform richtextbox用法

winform richtextbox用法

WinForms的RichTextBox控件是一个功能强大的文本编辑器,它允许用户以各种格式输入、编辑和查看文本。

以下是一些常见的RichTextBox用法:创建RichTextBox控件:在Visual Studio中,您可以通过拖放RichTextBox控件到窗体上来创建它。

您也可以使用代码来创建RichTextBox控件并设置其属性。

c复制代码RichTextBox richTextBox = new RichTextBox();richTextBox.Location = new Point(10, 10); = "richTextBox1";richTextBox.Size = new Size(200, 200);this.Controls.Add(richTextBox);读取文本:使用RichTextBox的Text属性可以读取编辑器中的文本。

c复制代码string text = richTextBox.Text;修改文本:您可以使用RichTextBox的Selection属性和SelectionColor、SelectionFont等方法来选择和修改文本。

c复制代码richTextBox.SelectionStart = 0; // 选择开始处richTextBox.SelectionLength = 5; // 选择5个字符richTextBox.SelectionColor = Color.Red; // 将选择的文本颜色改为红色添加文本:您可以使用RichTextBox的AppendText方法或Text属性来添加文本。

c复制代码richTextBox.AppendText("Hello World"); // 在文本末尾添加文本richTextBox.Text += "New Text"; // 添加新文本并覆盖原始Text属性值插入文本:您可以使用RichTextBox的Selection属性和SelectionInsert方法来插入文本。

winform中如何获得TextBox光标位置

winform中如何获得TextBox光标位置

winform中如何获得TextBox光标位置winform中如何获得TextBox光标位置?第一反应是SelectionStart属性,结果发现在分方向选择内容时返回错误值,真正答案如下:using System;using ponentModel;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Drawing;namespace WindowsApplication5...{public partial class Form1 : Form...{public Form1()...{InitializeComponent();}[DllImport("user32.dll")]private static extern bool GetCaretPos(out Point ppt);private void Form1_Load(object sender, EventArgs e)...{this.textBox1.Text = "jinjazz";}private void Form1_MouseDown(object sender, MouseEventArgs e)...{Point p;GetCaretPos(out p);int i=this.textBox1.GetCharIndexFromPosition(p);this.Text = i.ToString();}}}在zswang(偶最pf的伴水)的提醒下,上面方法存在两个遗漏,zswang的补充如下:1、当输入焦点没有在编辑框中(比如有多个输入框),这样光标的位置获取并非指定。

当然可以考虑获取之前先Focus()一下。

2、GetCharIndexFromPosition()方法有缺陷,当光标在最后一个字符来回的时候数值不变-_-!!!得完善一下。

winform datagridviewtextboxcolumn 赋值

winform datagridviewtextboxcolumn 赋值

winform datagridviewtextboxcolumn 赋值Winform DataGridViewTextBoxColumn 赋值DataGridViewTextBoxColumn 是Winform 中的一种表格列类型,用于显示和编辑文本数据。

赋值是指将数据存储到DataGridViewTextBoxColumn 中的单元格中。

在本文中,我们将了解如何在Winform 应用程序中使用DataGridViewTextBoxColumn 并对其进行赋值。

第一步:准备工作在开始编写代码之前,我们需要创建一个Winform 应用程序并添加一个DataGridView 控件。

打开Visual Studio 以创建新的Winform 项目,并在窗体设计器中拖动和放置一个DataGridView 控件。

第二步:创建DataGridViewTextBoxColumn为了能够实现赋值操作,我们需要首先创建一个DataGridViewTextBoxColumn。

可以在窗体的加载事件中添加如下代码来创建和添加该列:csharpprivate void Form1_Load(object sender, EventArgs e){创建并添加DataGridViewTextBoxColumnDataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();column.HeaderText = "姓名"; = "nameColumn";dataGridView1.Columns.Add(column);}在上述代码中,我们创建了一个名为"nameColumn" 的DataGridViewTextBoxColumn,并将其添加到DataGridView 控件的列集合中。

第三步:赋值现在我们已经创建了一个文本列,接下来我们将演示如何将数据赋值到这个列中的单元格。

按键获取鼠标指向窗口坐标信息的方法

按键获取鼠标指向窗口坐标信息的方法

按键获取鼠标指向窗口坐标信息的方法
获取鼠标指向窗口坐标信息的方法
通过按键获取鼠标指向窗口坐标信息是一种常见的操作方式。

在编程中,我们
可以使用以下方法获得鼠标指向窗口的坐标信息。

1. 使用鼠标事件监听器:在程序中使用鼠标事件监听器可以实时获取鼠标动作
的信息,其中包括鼠标的坐标。

通过添加监听器,当鼠标指向窗口时,我们就能获取到窗口坐标信息。

具体的实现方法会因不同的编程语言而有所不同。

2. 使用操作系统提供的API:各种操作系统都提供了获取鼠标信息的API接口。

通过调用这些API,我们可以获取鼠标指向窗口的坐标信息。

在Windows操作系
统中,可以使用GetCursorPos函数来获取鼠标的坐标信息。

在MacOS中,可以使
用CGEventGetLocation函数来获取鼠标的坐标信息。

3. 使用第三方库:许多编程语言提供了第三方库,可以简化获取鼠标指向窗口
坐标信息的过程。

例如,在Python中,可以使用PyGetWindow库或PyAutoGUI库来获取鼠标信息和窗口坐标信息。

这些库封装了底层的API调用,提供了更易用
的接口。

总结:
通过使用鼠标事件监听器、操作系统API或第三方库,我们可以轻松获取鼠标
指向窗口的坐标信息。

这样的方法可以应用于各种编程场景,帮助我们设计更灵活、交互性更强的应用程序。

winform实现TextBox关键字智能提示

winform实现TextBox关键字智能提示

winform实现TextBox关键字智能提⽰ 有时候由于项⽬需求的需要,需要实现像百度那样输⼊关键字后有下拉框提⽰,在⽹上搜了下,⼀种是利⽤ComboBox和TextBox的AutoCompleteMode属性,个⼈感觉不太灵活,关键字只能从第⼀个字符开始匹配,不能实现任意位置的匹配和多个关键字的匹配;另外⼀⼀种⽅法是重写listbox 感觉太复杂…… 最后我⾃⼰想了个⽐较简单,灵活的⽅法: 使⽤listBox的DrawMode.OwnerDrawFixed属性,设置ItemHeight=30,添加listBox1_DrawItem事件代码private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["SQLConnString"].ConnectionString;private void Form1_Load(object sender, EventArgs e){listBox1.DrawMode = DrawMode.OwnerDrawFixed;listBox1.ItemHeight = 30;}代码private void listBox1_DrawItem(object sender, DrawItemEventArgs e){// Set the DrawMode property to draw fixed sized items.listBox1.DrawMode = DrawMode.OwnerDrawFixed;// Draw the background of the ListBox control for each item.e.DrawBackground();// Define the default color of the brush as black.Brush myBrush = Brushes.Black;FontFamily fontFamily = new FontFamily("宋体");System.Drawing.Font myFont = new Font(fontFamily, 20);// Determine the color of the brush to draw each item based on the index of the item to draw .if ((e.State & DrawItemState.Selected) == DrawItemState.Selected){//e.Graphics.FillRectangle(Brushes.Blue, e.Bounds);if (e.Index > -1){e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), myFont, Brushes.White, e.Bounds, StringFormat.GenericDefault);}}else{//e.Graphics.FillRectangle(Brushes.White, e.Bounds);if (e.Index > -1){e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), myFont, myBrush, e.Bounds, StringFormat.GenericDefault);}}e.DrawFocusRectangle();}以SQL Server2005⽰例数据库AdventureWorks为例,添加textBox1_TextChanged事件,获取输⼊关键字,通过模糊查询将数据库中的相关信息绑定到下拉框listBox1中:代码private void BindList(DataTable dt){this.listBox1.Items.Clear();for (int i = 0; i < dt.Rows.Count; i++){listBox1.Items.Add(dt.Rows[i]["name"].ToString());}if (dt.Rows.Count < 11){this.listBox1.Height = 30 * dt.Rows.Count + 30;}else{this.listBox1.Height = 300;}this.listBox1.Visible = true;}private DataTable getDataTable(string s){string sql = @" SELECT Name FROM Person.CountryRegion where [Name] like '%" + s.Trim() + "%' ";string strErr = "";DataTable dt = new DataTable();RunSQL(sql, null, out dt, out strErr);return dt;}public static bool RunSQL(string strSQL, SqlParameter[] para, out DataTable objDataTable, out string strErr){objDataTable = new DataTable();strErr = "";using (SqlConnection conn = new SqlConnection(ConnectionString)){SqlCommand sqlComm = new SqlCommand(strSQL, conn);mandType = CommandType.Text;if (para != null){foreach (SqlParameter parm in para){if ((parm.Direction == ParameterDirection.InputOutput || parm.Direction == ParameterDirection.Input) && (parm.Value == null)){parm.Value = DBNull.Value;}sqlComm.Parameters.Add(parm);}}SqlDataAdapter sqlDa = new SqlDataAdapter();try{sqlDa.SelectCommand = sqlComm;sqlDa.Fill(objDataTable);sqlComm.Parameters.Clear();return true;}catch (Exception ex){strErr = ex.Message;return false;}finally{if (sqlComm != null){sqlComm.Dispose();}if (sqlDa != null){sqlDa.Dispose();}}}}private void textBox1_TextChanged(object sender, EventArgs e){if (this.textBox1.Text.Trim() != ""){DataTable dt = getDataTable(this.textBox1.Text.Trim());BindList(dt);this.listBox1.Visible = true;}else{this.listBox1.Items.Clear();this.listBox1.Visible = false;}}在listBox1显⽰关键字的匹配结果时,先将 this.listBox1.Visible = false;当有匹配结果时置为true,就可以实现当关键字有匹配项时出现下拉提⽰,没有时隐藏,然后定义listbox和textbox的⿏标事件,使⿏标经过时变⾊,效果就跟百度的下拉提⽰⼀样了代码private void listBox1_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.Enter && this.listBox1.Visible && this.listBox1.SelectedItems.Count > 0){this.textBox1.Text = this.listBox1.SelectedItems[0].ToString();this.listBox1.Visible = false;this.textBox1.Focus();}}private void textBox1_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.Down && this.listBox1.Visible){this.listBox1.Focus();if (this.listBox1.SelectedItems.Count > 0){this.listBox1.SetSelected(this.listBox1.SelectedIndex, false);}if (this.listBox1.Items.Count > 0){this.listBox1.SetSelected(0, true);}}}private void listBox1_MouseUp(object sender, MouseEventArgs e){if (this.listBox1.SelectedItems.Count > 0){this.textBox1.Text = this.listBox1.SelectedItems[0].ToString();this.listBox1.Visible = false;this.textBox1.Focus();}}private void listBox1_MouseMove(object sender, MouseEventArgs e){Point m = new Point(e.X, e.Y);int index = GetItemAt(this.listBox1, e.X, e.Y);if (this.listBox1.SelectedItems.Count > 0 && this.listBox1.SelectedIndex != index) {this.listBox1.SetSelected(this.listBox1.SelectedIndex, false);}if (index != -1 && this.listBox1.SelectedIndex != index){this.listBox1.SetSelected(index, true);}}private int GetItemAt(ListBox listBox, int X, int Y){int index = -1;for (int i = 0; i < listBox.Items.Count; i++){System.Drawing.Rectangle r = listBox.GetItemRectangle(i);if (r.Contains(new Point(X, Y))){index = i;break;}}return index;}最后的效果:。

winformtextbox文本框设置多行输入小技巧总结

winformtextbox文本框设置多行输入小技巧总结

winformtextbox⽂本框设置多⾏输⼊⼩技巧总结对于我们经常要对⽂本框进⾏多⾏输⼊后进⾏查询、插⼊、删除、更新操作等,要很⽅便的从其他诸如Excel中进⾏复制粘贴的数据来说,textbox⽂本框必须设置为多⾏属性:Multiline 属性设置为True,其次对字符串进⾏⼀下处理:string Ocno=this.txt_OCNO.Text.Trim();string strValue = this.txt_Barcode.Text;//设置⽂本框的内容string shopNoValue = this.CB_ShopNo.Text;if (Ocno == "" && strValue == "" && CB_ShopNo.Text == ""){MessageBox.Show("批次、条码、车间不能同时为空,⾄少要输⼊⼀个", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);}else{string[] arrValue = strValue.Split('\r');//将⽂本框的内容按回车进⾏分组string strBarcodeList = "";//设置⼀个字符串接受分割开的每⼀个字符DateTime DT_Start = Convert.ToDateTime(this.DTP_Start.Text);DateTime DT_end = Convert.ToDateTime(this.DTP_End.Text);for (int i = 0; i < arrValue.Length; i++){strBarcodeList = strBarcodeList + "'" + arrValue[i].Replace("\n", "") + "',";//将分隔开的字符串进⾏重新组装中间加,逗号}if (strBarcodeList.Length > 0)//strBarcodeList = strBarcodeList.Replace("\r","");//撤除将字符串最后的回车符strBarcodeList = strBarcodeList.Remove(strBarcodeList.Length - 1);//去除字符串最后的逗号以上⽅便将字符串转换为:"A,B,C"这样⼦的格式。

C#在Winform中改变Textbox高度三种方法

C#在Winform中改变Textbox高度三种方法
}
}
2.在属性窗口改变字体大小,间接改变Textbox的高度
codeproject上有个项目,可以参考一下:
3.保持单行模式,设置AutoSize为false,再设置高度。AutoSize属性是被隐藏起来的,需要在代码里直接设置
txtTest.AutoSize Fra bibliotek false;
txtTest.Height = 18;
1.将Textbox改为多行模式,设置MutliLine属性为True,然后屏蔽Enter键。
privatevoidtxtTest_KeyDown (objectsender, KeyEventArgs e)
{if((int)e.KeyCode ==13)
{
e.SuppressKeyPress =true;
最近在做cwinform项目需要有一个能动态调整大小的textbox并且要是单行的
C#在Winform中改变Textbox高度三种方法
原文:/henulwj/article/details/8239877
最近在做C# Winform项目,需要有一个能动态调整大小的Textbox,并且要是单行的。试了几次,单行模式的Textbox不能直接改高度。于是搜索了一下,整理出几个改变高度的方法。

winform datagridviewtextboxcolumn 赋值

winform datagridviewtextboxcolumn 赋值

winform datagridviewtextboxcolumn 赋值
(最新版)
目录
1.介绍 WinForm DataGridViewTextBoxColumn
2.详述如何给 DataGridViewTextBoxColumn 赋值
3.总结
正文
一、介绍 WinForm DataGridViewTextBoxColumn
在 WinForm 中,DataGridViewTextBoxColumn 是一种用于显示和编
辑文本数据的控件。

它可以让用户在 DataGridView 中输入和编辑文本信息,非常适合用于显示和编辑大量文本数据。

二、详述如何给 DataGridViewTextBoxColumn 赋值
给 DataGridViewTextBoxColumn 赋值主要包括以下步骤:
1.创建一个 DataGridViewTextBoxColumn 对象。

2.使用属性窗口或编程方式设置 DataGridViewTextBoxColumn 的属性,例如:
a.设置 HeaderText 属性,以设置列标题。

b.设置 DefaultCellStyle 属性,以设置单元格的默认样式。

c.设置 CellTemplate 属性,以设置单元格的显示模板。

3.将 DataGridViewTextBoxColumn 添加到 DataGridView 的Columns 集合中。

4.使用 DataGridView 的Rows 属性向 DataGridView 中添加数据,DataGridViewTextBoxColumn 会自动为每一行创建一个文本框。

winform datagridviewtextboxcolumn 赋值

winform datagridviewtextboxcolumn 赋值

winform datagridviewtextboxcolumn 赋值(原创版)目录1.WinForm DataGridViewTextBoxColumn 控件简介2.实现 DataGridViewTextBoxColumn 控件的赋值方法3.示例代码及解析正文一、WinForm DataGridViewTextBoxColumn 控件简介在 WinForm 中,DataGridView 是一个常用的数据绑定控件,用于显示和编辑表格数据。

DataGridViewTextBoxColumn 是 DataGridView 中的一种列类型,用于在表格中显示和编辑文本数据。

二、实现 DataGridViewTextBoxColumn 控件的赋值方法要实现 DataGridViewTextBoxColumn 控件的赋值,可以通过以下方法:1.设计时赋值:在设计器中,选择 DataGridViewTextBoxColumn 控件,然后在属性窗口中设置相应的属性值。

2.编程时赋值:在代码中,通过 DataGridViewTextBoxColumn 控件的名称或者索引,设置相应的属性值。

三、示例代码及解析以下是一个简单的示例,展示如何为 DataGridViewTextBoxColumn 控件赋值:```csharpusing System;using System.Data;using System.Windows.Forms;amespace WinForm_DataGridViewTextBoxColumn_示例{public class Form1 : Form{private DataGridView dataGridView1;private DataGridViewTextBoxColumn textBoxColumn1;public Form1(){// 创建 DataGridView 控件dataGridView1 = new DataGridView();// 创建 DataGridViewTextBoxColumn 控件textBoxColumn1 = new DataGridViewTextBoxColumn();// 设置列名textBoxColumn1.HeaderText = "姓名";// 设置列宽度textBoxColumn1.Width = 100;// 将列添加到 DataGridView 中dataGridView1.Columns.Add(textBoxColumn1);// 将 DataGridView 控件添加到窗体中this.Controls.Add(dataGridView1);}}}```以上代码创建了一个简单的 DataGridView,其中包含一个DataGridViewTextBoxColumn 控件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

winform中如何获得TextBox光标位置
winform中如何获得TextBox光标位置?第一反应是SelectionStart属性,结果发现在分方向选择内容时返回错误值,真正答案如下:
using System;
using ponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing;
namespace WindowsApplication5
...{
public partial class Form1 : Form
...{
public Form1()
...{
InitializeComponent();
}
[DllImport("user32.dll")]
private static extern bool GetCaretPos(out Point ppt);
private void Form1_Load(object sender, EventArgs e)
...{
this.textBox1.Text = "jinjazz";
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
...{
Point p;
GetCaretPos(out p);
int i=this.textBox1.GetCharIndexFromPosition(p);
this.Text = i.ToString();
}
}
}
在zswang(偶最pf的伴水)的提醒下,上面方法存在两个遗漏,zswang的补充如下:
1、当输入焦点没有在编辑框中(比如有多个输入框),这样光标的位置获取并非指定。

当然可以考虑获取之前先Focus()一下。

2、GetCharIndexFromPosition()方法有缺陷,当光标在最后一个字符来回的时候数值不变-_-!!!得完善一下。

public virtual int GetCharIndexFromPosition(Point pt)
...{
int lParam = NativeMethods.Util.MAKELONG(pt.X, pt.Y);
int n = (int) UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0xd7, 0, lParam); //EM_CHARFROMPOS = 0xd7
n = NativeMethods.Util.LOWORD(n);
if (n < 0)
...{
return 0;
}
string text = this.Text;
if (n >= text.Length)
...{
n = Math.Max(text.Length - 1, 0); //<<<<<<<
}
return n;
}。

相关文档
最新文档