gpt4 book ai didi

C# Windows窗体打印对话框点击OK两次响应

转载 作者:行者123 更新时间:2023-11-30 12:36:45 25 4
gpt4 key购买 nike

我将 Visual Studio 2008、.net Framework 3.5 用于我正在开发的 Windows 窗体客户端-服务器应用程序。当我运行程序并尝试打印时出现一个奇怪的错误。打印对话框打开,但我必须单击两次“确定”按钮才能工作。第二次点击后它工作正常,没有错误。当我在 if (result == DialogResult.OK) 上设置断点时,断点直到第二次单击才会触发。这是代码:

private void tbPrint_Click(object sender, EventArgs e)
{
try
{
printDialog1.Document = pDoc;

DialogResult result = printDialog1.ShowDialog();

if (result == DialogResult.OK)
{
pDoc.PrinterSettings.PrinterName = printDialog1.PrinterSettings.PrinterName;
pDoc.Print();
}
...

这快把我逼疯了,我看不出还有什么可以干扰它的。

最佳答案

我在使用 C#/WinForms 中的 OpenFileDialog 时遇到了“无法识别第一个工具条单击”的情况。经过大量的诅咒和谷歌搜索,我这样做了:

  1. toolstrip1_Click 中:

    private void toolStrip1_Click(object sender, EventArgs e)
    {
    this.Validate();
    }
  2. 在调用OpenFileDialog的函数中:

    private void locateMappingToolStripMenuItem_Click(object sender, EventArgs e)
    {
    OpenFileDialog dg = new System.Windows.Forms.OpenFileDialog();
    if (dg.ShowDialog() == DialogResult.OK)
    {
    fileLocation = Path.GetDirectoryName(dg.FileName);
    try
    {
    if (LoadData())
    {
    //Enable toolbar buttons
    toolStripButton3.Enabled = true;
    toolStripButton5.Enabled = true;
    toolStripButton1.Enabled = true;
    toolStripButton2.Enabled = true;
    searchParm.Enabled = true;
    toolStripButton4.Enabled = true;
    toolStripButton6.Enabled = true;
    exitToolStripMenuItem.Enabled = true;
    EditorForm.ActiveForm.TopLevelControl.Focus();
    }
    }
    catch (Exception exx)
    {
    MessageBox.Show(exx.Message + Environment.NewLine + exx.InnerException);
    }
    }
    }

线条似乎是关键的两件事:

  • OpenFileDialog 关闭时,需要将焦点重置到主窗口 (EditorForm.ActiveForm.TopLevelControl.Focus();)
  • 单击工具条按钮时,工具条会验证自身 (this.Validate()) 并识别鼠标事件。

关于C# Windows窗体打印对话框点击OK两次响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2648977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com