Tag: winforms

如何在C#Winform中锁定应用程序GUI

可能重复: 如何在后台线程运行时阻止Winforms UI 我正在使用C#WinForm应用程序 我在屏幕上有一个Save按钮,屏幕数据保存到数据库中。 当用户点击按钮应用程序进入数据库并保存数据时会发生什么。 这需要一些时间。 但是,如果用户再次单击“保存”按钮,则会触发Click事件,当第一次单击返回主代码(保存数据库后)时,捕获的事件将被触发。 简而言之,当线程从第一个事件返回时,会捕获并触发click事件(我尝试了启用/禁用按钮的方案)。 我怎么能阻止这种行为。 此致,Akhil @Jalal:我尝试了一些修改后的代码 private readonly object _userActivityLocker = new object(); private void btnSave_Click(object sender, EventArgs e) { if (System.Threading.Monitor.TryEnter(_userActivityLocker)) { //note that any sub clicks will be ignored while we are here try { DateTime dt = DateTime.Now; Thread.Sleep(2000); Debug.Print(“FirstClick {0} Second Click {1}”,dt.ToLongTimeString(), DateTime.Now.ToLongTimeString()); //here […]

GroupBox自动resize

拿一个GroupBox ,把let说成Label ,然后设置AutoSizeMode = GrowAndShrink和AutoSize = true 。 会出现两个问题: Label和GroupBox底部之间存在巨大差距(几乎足以适应另一个Label lol); AutoSize不尊重GroupBox.Text属性。 问题是如何使GroupBox.AutoSize正常工作 ? 正确的意思是:最小宽度应足以适合GroupBox.Text ,由于未知原因,下面应该没有间隙(它不是Margin ,也不是Padding ,看起来很丑)。 我试图在OnPaint测量字符串长度并在那里设置MinimumSize 。 它有效,但我对此有疑问,好像我想稍后实际设置MinimumSize – 它会在重绘后丢失。 更新,这里是截图:

图表 – 放大以显示更精确的数据

所以我现在有一张图表,其中包含大量数据。 这可以在下图中看到: 基本上我希望用户能够放大并进一步查看数据。 正如您所知,它目前已经携带了大量数据。 我希望用户能够缩放并查看更精确的内容。 protected void drawChart() { DataTable dt = new DataTable(); dt.Clear(); foreach (DataGridViewColumn col in dataGridView1.Columns) { dt.Columns.Add(col.HeaderText); } foreach (DataGridViewRow row in dataGridView1.Rows) { DataRow dRow = dt.NewRow(); foreach (DataGridViewCell cell in row.Cells) { dRow[cell.ColumnIndex] = cell.Value; } dt.Rows.Add(dRow); } chart1.DataBind(); chart1.DataSource = dt; chart1.ChartAreas[0].AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount; chart1.ChartAreas[0].AxisX.LabelStyle.Angle = 90; […]

在TextBox中插入整数值

我需要在C#Windows窗体应用程序(GUI)的TextBox中显示一个整数值。 我有一个int32值。 我找不到像TextBox那样采用int值的容器。 TextBox只接受字符串。 我如何输入演员表?

如何将图像添加到System.Windows.Forms.ListBox?

我正在使用C#开发聊天程序,我使用ListBox管理昵称列表。 但是,客户有昵称和州(在线,离开) 所以,为了管理状态,我想在ListBox中添加图像(在线 – 绿色圆圈,远离红色圆圈)(这是我的想法) 如何将图像添加到ListBox? 请帮我。 谢谢。

从cmd运行时控制台和winforms应用程序之间的区别

我有一个winforms应用程序,有时从命令行使用。 这是代码(当然简化): [STAThread] static void Main() { AttachConsole(ATTACH_PARENT_PROCESS); Console.WriteLine(“Hello”); /*Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1());*/ } 如果那是一个控制台应用程序,输出可能是: C:\ConsoleApplication\ConsoleApplication.exe Hello C:\ConsoleApplication\_ 在Windows应用程序的情况下,它实际上: C:\WindowsApplication\WindowsApplication.exe C:\WindowsApplication\Hello _ 任何人都可以告诉我为什么我们有这样的差异,是否有可能使我的Windows应用程序在从cmd运行时表现得像控制台? 编辑: 我希望我的Windows应用程序在从cmd运行时表现得像控制台: C:\WindowsApplication\WindowsApplication.exe Hello C:\WindowsApplication\_ 解: 结果我正在运行我的应用程序 C:\WindowsApplication\start /wait WindowsApplication.exe

Application.Run(Form)vs. Form.Show()?

假设主GUI线程上发生了很多事情(数据流入,用户操作等)。 假设我们想创建一个表单并显示它。 如果我们使用Application.Run(Form)而不是Form.Show()是否可以提升性能? 有一个更好的方法吗? 请解释原因或原因。

validationWindows窗体应用程序中的文本框

我的情景是: 输入一个或多个字符后,不允许在文本框的起始位置使用空格文本框允许使用空格 以下不适用于我的场景。 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.Handled = (e.KeyChar == (char)Keys.Space)) { MessageBox.Show(“Spaces are not allowed”); } } textBox1.Text.TrimStart()

如何在c#winforms中添加上标幂运算符

我知道可以使用unicode值将square运算符添加到标签中。( 如何在.NET GUI标签中显示上标字符? )。 有没有办法为标签添加任何力量? 我的应用程序需要显示多项式函数,即x ^ 7 + x ^ 6等。 谢谢,迈克

自定义GroupBox,带有自定义TextColor,BorderColor和Transparent BackColor

我正在使用WinForms 。 在我的表单中,我有一个GroupBox 。 这是一个自定义组框。 我想要一个透明的背景groupbox 。 我在为groupbox创建透明背景时遇到问题此代码的问题是当我将组框backcolor设置为透明时,我继续收到错误。 错误:控件不支持透明背景颜色。 g.Clear(BackColor = Color.Transparent); (这是给我问题的那条线) private void DrawGroupBox(GroupBox box, Graphics g, Color textColor, Color borderColor) { if (box != null) { Brush textBrush = new SolidBrush(textColor); Brush borderBrush = new SolidBrush(borderColor); Pen borderPen = new Pen(borderBrush); SizeF strSize = g.MeasureString(box.Text, box.Font); Rectangle rect = new Rectangle(box.ClientRectangle.X, box.ClientRectangle.Y […]