Efrain Mejias C Asked: 2020-04-14 08:36:33 +0800 CST 2020-04-14 08:36:33 +0800 CST 2020-04-14 08:36:33 +0800 CST 从文本框 C# 中删除光标 772 当一个文本框获得焦点时,会出现一个闪烁的条......我怎样才能让它不出现? c# 2 Answers Voted Best Answer NaCl 2020-04-18T18:02:31+08:002020-04-18T18:02:31+08:00 好吧,我已经用我放在评论中的代码以某种方式管理它。 在Form实现这些控件的类中TextBox,您执行以下操作: 您using System.Runtime.InteropServices;在文件的开头执行(与您使用的文件相对应的代码文件的名称在MiForm.cs 哪里。)MiFormForm 您定义外部方法HideCaret: [DllImport("user32.dll")] 静态外部布尔 HideCaret(IntPtr hWnd); 然后为每个TextBox您配置事件GotFocus如下: foreach (TextBox item in MiColeccionDeTextBoxes) { item.GotFocus += delegate { HideCaret(item.Handle); } } 有了这个,你就有了完成所需的东西Form,下面我留下了Form1.cs我在尝试时制作的所有代码: // Recuerda el using System.Runtime.InteropServices; public partial class Form1 : Form { [DllImport("user32.dll")] static extern bool HideCaret(IntPtr hWnd); public Form1() { InitializeComponent(); TextBox[] texts = { txt1, txt2 }; foreach (TextBox item in texts) item.GotFocus += delegate { HideCaret(item.Handle); }; } /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.txt1 = new System.Windows.Forms.TextBox(); this.txt2 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // txt1 // this.txt1.Location = new System.Drawing.Point(12, 48); this.txt1.MaxLength = 1; this.txt1.Name = "txt1"; this.txt1.Size = new System.Drawing.Size(100, 20); this.txt1.TabIndex = 0; // // txt2 // this.txt2.Location = new System.Drawing.Point(12, 74); this.txt2.MaxLength = 1; this.txt2.Name = "txt2"; this.txt2.Size = new System.Drawing.Size(100, 20); this.txt2.TabIndex = 1; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(284, 261); this.Controls.Add(this.txt2); this.Controls.Add(this.txt1); this.Name = "Form1"; this.Text = "Test Focus"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.TextBox txt1; private System.Windows.Forms.TextBox txt2; } Leandro Tuttini 2020-04-19T03:20:22+08:002020-04-19T03:20:22+08:00 我建议您不要使用 TextBox 来表示每个正方形,您可以使用图片框并绘制数字 如何在图片框上绘制文字? 在 C Sharp 中绘制图形 这样,您将拥有事件但您可以控制操作,它不会像分配.Text那样直接,但您不会在控件上有任何光标 如果您不想使用 Paint 事件,为了使数字的分配更简单,您可以查看是否使用 Graphics g = pictureBox1.CreateGraphics(); 或者类似的东西 Bitmap bm = new Bitmap(pictureBox1.Width, pictureBox1.Height); using (Graphics g = Graphics.FromImage(bm)) { using (SolidBrush myBrush = new SolidBrush(Color.Black)) { using (Font myFont = new Font("Times New Roman", 24)) { g.DrawString("aqui numero", myFont, myBrush, 10, 10); pictureBox1.Image = bm; } } } 当您想显示一个数字时,您将其绘制在图像中并将其分配给图片框,如果您需要分配背景颜色,您总是可以毫无问题地做到这一点
好吧,我已经用我放在评论中的代码以某种方式管理它。
在
Form
实现这些控件的类中TextBox
,您执行以下操作:您
using System.Runtime.InteropServices;
在文件的开头执行(与您使用的文件相对应的代码文件的名称在MiForm.cs
哪里。)MiForm
Form
您定义外部方法
HideCaret
:然后为每个
TextBox
您配置事件GotFocus
如下:有了这个,你就有了完成所需的东西
Form
,下面我留下了Form1.cs
我在尝试时制作的所有代码:我建议您不要使用 TextBox 来表示每个正方形,您可以使用图片框并绘制数字
如何在图片框上绘制文字?
在 C Sharp 中绘制图形
这样,您将拥有事件但您可以控制操作,它不会像分配.Text那样直接,但您不会在控件上有任何光标
如果您不想使用 Paint 事件,为了使数字的分配更简单,您可以查看是否使用
或者类似的东西
当您想显示一个数字时,您将其绘制在图像中并将其分配给图片框,如果您需要分配背景颜色,您总是可以毫无问题地做到这一点