Tag: winforms

如何按2列对datagridview进行排序

如何按两列(升序)对DataGridView进行排序? 我有两列: day和status 。 如果我需要按一列排序,我会: this.dataGridView1.Sort (this.dataGridView1.Columns[“day”], ListSortDirection.Ascending); 但对于两个?

抽绳自动换行或显示整个文本

这是我使用DrawString时得到的输出。 I = Smith,John II = Johnson,Mark III = Anderson,James IV = William,Craig V = Ford,他… page是一个float数据类型,该值基于e.PageSettings.Margins.Left; e.Graphics.DrawString(Text,new System.Drawing.Font(“Arial”,8F,FontStyle.Regular),Brushes.Black,page,30); 在上面的例子中,它是 e.Graphics.DrawString(Text, new System.Drawing.Font(“Arial”, 8F, FontStyle.Regular), Brushes.Black, page, 30); 我试过用这个 StringFormat format = new StringFormat(); format.FormatFlags = StringFormatFlags.FitBlackBox; e.Graphics.DrawString(Text, new System.Drawing.Font(“Arial”, 8F, FontStyle.Regular), Brushes.Black, page, 30, format); 我如何扩展/自动换行以便我可以在最后使用整个单词而不是“…”? I = Smith,John II = Johnson,Mark III = […]

如何知道datagridview中的特定复选框是否已检查?

我有一个gridview,它有2列,一个是文本框列,另一个是复选框列,如何知道选中了哪个复选框。 如图所示,假设选中了任何复选框,我想将相应的文本框值显示给该复选框。 任何人都可以帮助我?我尝试了下面的代码,但我面临的问题是,一旦我点击下一个复选框后显示值,然后显示之前检查的复选框值。 dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged); void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { object tempObj = dataGridView1.Rows[e.RowIndex].Cells[1].Value; dataGridView1_CurrentCellDirtyStateChanged(sender, e); if (((e.ColumnIndex) == 1) && ((bool)dataGridView1.Rows[e.RowIndex].Cells[1].Value)) { MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()); } }

C#:在ProgressBar上覆盖OnPaint不起作用?

认为创建一个自己绘制一些文本的ProgressBar应该很容易。 但是,我不太清楚这里发生了什么…… 我添加了以下两个覆盖: protected override void OnPaintBackground(PaintEventArgs pevent) { base.OnPaintBackground(pevent); var flags = TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter | TextFormatFlags.SingleLine | TextFormatFlags.WordEllipsis; TextRenderer.DrawText(pevent.Graphics, “Hello”, Font, Bounds, Color.Black, flags); } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); var flags = TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter | TextFormatFlags.SingleLine | TextFormatFlags.WordEllipsis; TextRenderer.DrawText(e.Graphics, “Hello”, Font, Bounds, Color.Black, flags); } 但是,我没有文本,甚至似乎都没有调用这些方法。 这里发生了什么? 更新:感谢到目前为止的两个答案,我已经通过使用SetStyle(ControlStyles.UserPaint, true)来实际调用OnPaint […]

获取事件的控件名称

在我的C#Windows窗体表单中,我有一些动态生成的按钮。 我在click事件上分配了以下方法。 是否可以获取触发事件的按钮的名称? private void btnBrowsDoc_Click(object sender, EventArgs e) { try { if (openFileDialog1.ShowDialog().Equals(DialogResult.OK)) { gbxDocument.Controls[“txtDocument” + count].Text = openFileDialog1.FileName; } else { return; } } catch (Exception ex) { //handle the exception } }

使用C#在表单之间传递数据的最佳方法

这更像是一个基于理论的问题。 我正在为C#中的最终项目设计,即创建Jeopardy。 我的问题是,在它们之间传递数据的最佳方法是什么? 例如,标题要求游戏在启动后显示选项屏幕。 在这里,他们将选择球员的数量和他们的名字。 我知道在我的gameform load事件中,我可以将这些东西指定为参数,并将它们作为参数从optionsform传递。 这看起来很麻烦,是否有更有效的方法来创建项目范围的变量,无论我目前使用哪种forms,我都可以参考? 感谢您的回答,我们将不胜感激! – 年轻的Padawan编码员

C#在特定时间执行function

我做了一个小的Windows窗体程序来对磁盘上的一些文件进行一些自动备份。 现在我需要在执行之前按一个按钮,但我想让程序运行,并在凌晨3点运行执行备份的function。 我研究了一下,发现我需要一个计时器,但我没有使用它,所以它在特定的时间执行。 我希望你能帮助我。 🙂 谢谢!

如何在运行时为动态创建的控件添加事件处理程序?

我正在研究C#windows应用程序。 我的应用程序从自定义控件库获取控件(按钮,文本框,富文本框和combobox等),并在运行时动态地将它们放入表单中。 我如何使用委托创建该控件的事件处理程序? 以及如何在特定的自定义控件点击事件中添加业务逻辑? 例如: 我有user1,user2,user3,当user1登录我想只显示“保存”按钮。 user2然后只显示“添加和删除”按钮,用户3只显示“添加和更新”按钮。按用户登录创建的文本框和按钮从DB表中获取信息。在这种情况下我如何处理不同的事件(添加,保存,更新,删除)为动态创建表单时不同用户的按钮保存,添加,删除和更新控件(保存,添加,删除和更新按钮对象来自相同的按钮类)

覆盖标题栏按钮的工具提示文本(关闭,最大化,最小化,帮助)

我一直在努力改变为表单主标题栏上的按钮显示的工具提示的文本。 简而言之,我们利用Windows窗体的“帮助”按钮来实现其他目的。 这工作正常。 问题是,当鼠标hover在该按钮上时,会出现“帮助”工具提示,这对应用程序没有任何意义。 理想情况下,有一些方法可以为我的应用程序更改该工具提示的文本; 但是,在这一点上,我只是想找到一种完全禁用工具提示的方法。 我知道你可以通过在regedit中修改’UserPreferencesMask’键来禁用整个操作系统的工具提示,但我真的想要一种方法让它只影响我的应用程序。 同样,理想情况下,托管代码可能会有一些方法,但我不反对链接到Windows API等。 感谢您解决此问题的任何建议!

如何在WinForm应用程序中获取最顶层表单的句柄?

我有一个WinForm应用程序,其他子窗体(不是mdi)。 如果用户按下“Esc”,即使没有焦点,也应关闭最上面的表格。 我可以使用键盘钩子来全局捕捉Escape,但我还需要关闭表单的句柄。 我想有一种方法可以使用Win32 API,但有一个使用托管代码的解决方案?