标签: winforms

如何退出所有正在运行的线程?

以下代码不会退出应用程序.如何退出应用程序并确保所有正在运行的线程都已关闭?

foreach (Form form in Application.OpenForms)
{
    form.Close();
}
Application.Exit();
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading winforms

57
推荐指数
6
解决办法
8万
查看次数

如何在MessageBox.Show对话框中更改"是"和"否"按钮的按钮文本?

我需要改变的消息框控制按钮YesContinueNoClose.如何更改按钮文字?

这是我的代码:

 DialogResult dlgResult = MessageBox.Show("Patterns have been logged successfully", "Logtool", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
Run Code Online (Sandbox Code Playgroud)

c# messagebox winforms

57
推荐指数
4
解决办法
15万
查看次数

c#,'Forms'在命名空间system.windows中不存在

我刚刚开始研究c#,并且正在摆弄一些我从某个论坛获得的代码示例.

此代码使用的命名空间using system.windows.forms我收到错误:senddown.我也是收到有关未定义功能的一些错误sendupForms我认为是在using system.windows.forms名字空间.

我正在使用visual studio 10(使用.net框架工作4.0).知道如何修复此错误吗?

谢谢.

c# winforms

57
推荐指数
4
解决办法
6万
查看次数

Winforms:Application.Exit vs Enviroment.Exit vs Form.Close

以下是我们退出应用程序的方式:

  1. Environment.Exit(0)
  2. Application.Exit()
  3. Form.Close()

这三种方法之间的区别是什么?何时使用每种方法?

.net c# vb.net windows winforms

57
推荐指数
1
解决办法
5万
查看次数

56
推荐指数
4
解决办法
12万
查看次数

WinForms C#中的优雅日志窗口

我正在寻找一种有效的方法来实现Windows窗体应用程序的日志窗口.在过去,我已经使用TextBox和RichTextBox实现了几个,但我仍然不完全满意这个功能.

此日志旨在向用户提供各种事件的近期历史记录,主要用于数据收集应用程序,其中可能会对特定事务的完成方式感到好奇.在这种情况下,日志不必是永久性的,也不必保存到文件中.

首先,一些提出的要求:

  • 高效快速; 如果快速连续地将数百行写入日志,则需要消耗最少的资源和时间.
  • 能够提供最多2000行左右的可变回滚.更长的时间是不必要的.
  • 突出和颜色是首选.不需要字体效果.
  • 达到回滚限制时自动修剪线条.
  • 添加新数据时自动滚动.
  • 奖励但不是必需的:在手动交互期间暂停自动滚动,例如用户正在浏览历史记录.

到目前为止我一直用来编写和修剪日志:

我使用以下代码(我从其他线程调用):

// rtbLog is a RichTextBox
// _MaxLines is an int
public void AppendLog(string s, Color c, bool bNewLine)
{
    if (rtbLog.InvokeRequired)
    {
        object[] args = { s, c, bNewLine };
        rtbLog.Invoke(new AppendLogDel(AppendLog), args);
        return;
    }
    try
    {
        rtbLog.SelectionColor = c;
        rtbLog.AppendText(s);
        if (bNewLine) rtbLog.AppendText(Environment.NewLine);
        TrimLog();
        rtbLog.SelectionStart = rtbLog.TextLength;
        rtbLog.ScrollToCaret();
        rtbLog.Update();
    }
    catch (Exception exc)
    {
        // exception handling
    }
}

private void TrimLog()
{
    try
    {
        // Extra …
Run Code Online (Sandbox Code Playgroud)

c# logging winforms

56
推荐指数
6
解决办法
5万
查看次数

检测WebBrowser完整页面加载

如何检测System.Windows.Forms.WebBrowser控件何时完成加载?

我尝试使用Navigate和DocumentCompleted事件,但在文档加载期间它们都被引发了几次!

c# webbrowser-control winforms

56
推荐指数
5
解决办法
11万
查看次数

如何禁用在DataGridView中选择的功能?

我想用我的DataGridView唯一来展示东西,我希望用户不能从中选择任何行,字段或任何东西DataGridView.

我怎样才能做到这一点?

.net c# datagridview winforms

56
推荐指数
4
解决办法
11万
查看次数

更新基础数据源时刷新DataGridView的最佳方法

更新基础数据源时刷新DataGridView的最佳方法是什么?

我经常更新数据源,并希望在发生时向用户显示结果.

我已经得到了这样的东西(并且它可以工作),但是忽略DataGridView.DataSource它似乎不是正确的方式.

List<ItemState> itemStates = new List<ItemState>();
dataGridView1.DataSource = itemStates;

for (int i = 0; i < 10; i++) { 
    itemStates.Add(new ItemState { Id = i.ToString() });
    dataGridView1.DataSource = null;
    dataGridView1.DataSource = itemStates;
    System.Threading.Thread.Sleep(500);
}
Run Code Online (Sandbox Code Playgroud)

.net c# datagridview winforms

55
推荐指数
3
解决办法
9万
查看次数

根据列和值在dataGridView中查找一行

我有一个dataGridView有3列:SystemId,FirstName,LastName使用数据库信息绑定.我想强调某一行,我会用它来做:

dataGridView1.Rows[????].Selected = true;
Run Code Online (Sandbox Code Playgroud)

然而,行ID我不知道并且bindingsource一直在变化,因此第10行在一个实例中可能是"John Smith"但在另一个实例中甚至不存在(我有一个过滤器根据用户输入的内容过滤掉源,因此输入在"joh"中会产生名字中包含"joh"的所有行,因此我的列表可以从50个名称变为3个单击中的3个.

我想找到一种方法,我可以根据SystemId和相应的数字选择一行.我可以使用以下方法获取系统ID:

systemId = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells["SystemId"].Value.ToString();
Run Code Online (Sandbox Code Playgroud)

现在我只需要将它应用于行选择器.类似于dataGridView1.Columns ["SystemId"] .IndexOf(systemId)但不起作用(这种方法也不存在).非常感谢任何帮助.

c# datagridview winforms

55
推荐指数
2
解决办法
19万
查看次数