Tag: winforms

在没有立即关闭的情况下处理新表格的正确方法是什么?

所以在我的应用程序中,我倾向于动态创建新的表单实例,然后使用Form.Show()来显示它们(非模态)。 private void test_click(object sender, EventArgs e) { var form = new myForm(); form.Show(); } 但是,Code Cracker告诉我应该处理这些表格。 所以,我用“使用”语句包装它们,但随后它们在打开后立即关闭。 using (var form = new myForm()) { form.Show(); } 我不想使用Form.ShowDialog(),因为在少数情况下我打开只显示报告的新窗口; 我不需要它们是模态的。

带关闭和添加按钮的TabControl

我想让一个标签控件有一个“x”(关闭按钮)和“+”(新标签按钮)。 我找到了一个添加x button的解决方案,该选项卡现在看起来像这样: 但是我想现在添加一个+那个黑圈。 我不知道如何,我尝试绘制最后一个标签的Paint事件,如下所示: var p = tabs.TabPages[tabs.TabCount – 1]; p.Paint += new PaintEventHandler(tab_OnDrawPage); private void tab_OnDrawPage(object sender, PaintEventArgs e) { // e.ClipRectangle. e.Graphics.DrawString(“+”, new Font(“verdana”, 10, FontStyle.Bold), Brushes.Black, e.ClipRectangle.X + 10, e.ClipRectangle.Y + 10); } 但它并没有显示任何吸引力。 我想这与我传递给DrawString()调用的位置有关,但我不知道要使用的正确位置。 我使用+10将它从最后一个标签中拉出来。 如何解决? 我自己没有做过任何自定义绘图,我正在学习它。

在BackGroundWorker中运行方法并显示ProgressBar

我想要的是当一些方法正在做一些任务时UI保持活跃,我想在进度条中显示工作的进度。 我有一个方法,一个BackGroundWorker和一个Progressbar 。 我想在BackGroundWorker开始运行时调用该方法并显示进度。 该方法包含一个循环。 因此,它可以报告进度。 那么,可以做些什么呢? private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the ‘dataSet1.TBLMARKET’ table. You can move, or remove it, as needed. myBGWorker.WorkerReportsProgress = true; } private void myBGWorker_DoWork(object sender, DoWorkEventArgs e) { parseFiles(); } private void myBGWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { myProgressBar.Value […]

如何对数据绑定DataGridView列进行排序?

我知道这个话题有很多问题。 我经历了所有这些,但似乎没有任何帮助。 如何通过单击列标题进行排序? 我应该如何修改此代码来完成这项工作? public partial class Form1 : Form { public Form1() { List list = new List(); list.Add(new MyClass(“Peter”, 1202)); list.Add(new MyClass(“James”, 292)); list.Add(new MyClass(“Bond”, 23)); BindingSource bs = new BindingSource(); bs.DataSource = list; DataGridView dg = new DataGridView(); DataGridViewTextBoxColumn c = new DataGridViewTextBoxColumn(); c.Name = “name”; c.DataPropertyName = “Name”; dg.Columns.Add(c); c = […]

选中/取消选中datagridview上的复选框

有人可以帮助我为什么它不起作用? 我有一个checkbox ,如果我点击它,这应取消选中datagridview中的所有复选框,这些复选框在包括用户选中复选框之前已经过检查。 这是代码: private void chkItems_CheckedChanged(object sender, EventArgs e) { foreach (DataGridViewRow row in datagridview1.Rows) { DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells[1]; if (chk.Selected == true) { chk.Selected = false; } else { chk.Selected = true; } } } 不应选中该复选框。 应该检查。 这是添加的列 DataGridViewCheckBoxColumn CheckboxColumn = new DataGridViewCheckBoxColumn(); CheckBox chk = new CheckBox(); CheckboxColumn.Width = 20; datagridview1.Columns.Add(CheckboxColumn);

使用矩阵单独旋转矩形

有一点绘图复杂,你会称之为。 当谈到矩阵并在形状上绘制旋转时,我的数学有点生疏。 这是一些代码: private void Form1_Paint(object sender, PaintEventArgs e) { g = e.Graphics; g.SmoothingMode = SmoothingMode.HighQuality; DoRotation(e); g.DrawRectangle(new Pen(Color.Black), r1); g.DrawRectangle(new Pen(Color.Black), r2); // draw a line (PEN, CenterOfObject(X, Y), endpoint(X,Y) ) g.DrawLine(new Pen(Color.Black), new Point((r1.X + 50), (r1.Y + 75)), new Point((/*r1.X + */50), (/*r1.Y – */25))); this.lblPoint.Text = “X-pos: ” + r1.X + […]

WinForms TextBox的自定义插入

我正在WinForms .Net 2.0应用程序中开发类似应用程序的自定义HyperTerminal。 我在Panel中有一个多行TextBox,您可以在其中与硬件设备进行交互。 我的客户希望有一个自定义Caret,一个填充矩形,大小为一个字符空间,而不是默认的垂直线。 我知道.Net默认情况下不提供执行此操作的选项,但必须有一些Windowsfunction才能执行此操作。

如何在c#中将datatable绑定到datagridview

我需要将我的DataTable绑定到我的DataGridView 。 我这样做: DTable = new DataTable(); SBind = new BindingSource(); //ServersTable – DataGridView for (int i = 0; i < ServersTable.ColumnCount; ++i) { DTable.Columns.Add(new DataColumn(ServersTable.Columns[i].Name)); } for (int i = 0; i < Apps.Count; ++i) { DataRow r = DTable.NewRow(); r.BeginEdit(); foreach (DataColumn c in DTable.Columns) { r[c.ColumnName] = //writing values } r.EndEdit(); DTable.Rows.Add(r); […]

在Winforms中检测空闲用户

如果用户处于非活动状态5分钟,我想暂停我的程序。 通过不活动,我的意思是在那段时间内没有按下他们的鼠标或键盘(包括在程序之外!)。 任何起点?

检测分辨率c#WinForms的变化

是否有一种简单的方法可以挂钩在更改全局屏幕分辨率时触发的事件?