- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在为离开我雇主的同事开发的代码添加一个功能。我将尝试在一个简单的案例中解释解决方案 -
我有 2 个表格 A 和 B。
在 A 表单上,我从用户那里获取文件夹路径,然后单击 A 上的按钮。
在单击表单 A 的按钮时,我需要将路径传递给表单 B 的方法 M。我公开了方法 M,并在表单 A 的 button_click 中编写了以下代码。
private void startButton_Click(object sender, EventArgs e)
{
startButton.Enabled = false;
pathTextBox.Enabled = false;
using (Form1 form1 = new Form1())
{
// This is what I am trying to do. Initially start() did not had any input parameters, now I have added a single input parameter to it.
form1.start(pathTextBox.Text);
}
//this.Close();
}
Now, this works except that FormA_Load() is defined like this -
private void FormA_Load(object sender, EventArgs e)
{
start();
}
问题是我如何将 pathBox.Text 传递给 FormA_Load(),因为它会抛出错误
No overload for method 'start' takes 0 arguments
public void start(string selectedPath)
{
try
{
this.Cursor = Cursors.WaitCursor;
SMSManager smsManager = new SMSManager (selectedPath);
smsManager .CopyCompletedHandler += new SMSManager .CopyCompleted(smsManager_CopyCompletedHandler);
smsManager .CopyLogFiles();
}
catch (Exception ex)
{
WriteLog(ex);
smsManager _CopyCompletedHandler("Error :" + ex.Message, false);
this.Cursor = Cursors.Default;
MessageBox.Show(ex.Message);
}
}
void smsManager_CopyCompletedHandler(string data, bool isFullyCompleted)
{
Invoke((MethodInvoker)delegate
{
this.Text = "SMS Collector- Copying...";
txtStatus.AppendText(stepNo + ". " + data + Environment.NewLine + Environment.NewLine);
txtStatus.ScrollToCaret();
stepNo++;
if (isFullyCompleted)
{
this.Cursor = Cursors.Default;
this.Text = "SMS Collector- Completed";
MessageBox.Show(this, data, "Message", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
});
}
最佳答案
您的代码需要的第一个更改。
通过被调用表单的构造函数传递文本框中的信息,然后显示表单
private void startButton_Click(object sender, EventArgs e)
{
startButton.Enabled = false;
pathTextBox.Enabled = false;
using (Form1 form1 = new Form1(pathTextBox.Text))
{
// ShowDialog is required to stop the execution here
// Otherwise the code exits immediately and the using destroys the form1 instance
form1.ShowDialog();
}
}
现在以调用的形式将传递的路径保存在全局变量中
public class Form1
{
private string _selectedPath = string.Empty;
public Form1(string path)
{
InitializeComponents();
_selectedPath = path;
}
.....
}
现在您可以在表单加载事件中调用 SMS 系统的初始化(或者更好地覆盖 OnLoad 事件。)现在这是安全的,因为在 OnLoad 覆盖中表单的控件已完全初始化并准备好使用
protected override void OnLoad(EventArgs e)
{
// The code here will be executed before the Form.Load event
start(_selectedPath);
base.OnLoad(e);
// The code here will be executed after the Form.Load event
}
关于c# - Form_Load() - 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24991890/
我有一个从另一个表单继承的 winforms 表单。 例如 class StartForm : aSyncDialog aSyncDialog 有一个 onload 事件 protected over
private void Form1_Load(object sender, EventArgs e) { MessageBox.Show("Luanching.... Thi
在 C# 中,什么是 Form_Load 事件方法? 最佳答案 它只是一个方法名,它的实际名称没有任何意义。您通常会使用具有类似名称的方法来监听 Form 类的 Load 事件。当您在“属性”窗口中使
我正在为离开我雇主的同事开发的代码添加一个功能。我将尝试在一个简单的案例中解释解决方案 - 我有 2 个表格 A 和 B。 在 A 表单上,我从用户那里获取文件夹路径,然后单击 A 上的按钮。 在单击
这个问题在这里已经有了答案: What setup code should go in Form Constructors versus Form Load event? (2 个答案) 关闭 7
我有一个继承自基本表单的表单。 baseform_load 和 childform_load 事件中都有代码。 BaseForm 看起来像这样: public partial class BaseFo
我将我的初始化代码放在表单加载时,因为将它留在构造函数中不是一个好主意,因为设计器可能会崩溃。 问题是我刚刚意识到表单加载事件中的任何异常都将在内部捕获! 为什么?我应该如何克服它? priv
我有一个从菜单按钮调用的表单,它加载罚款,但我需要在加载表单时进行一些初始化。在 .NET 中,您可以执行以下操作: Form1.Load Handles Me.Load 当我点击表单时,它会生成一个
我希望有人尝试解释这些之间的区别。更具体地说,示例使用场景。 我正在重构一些 Windows 窗体 代码和 Form在 Form_Load() 中有一些代码事件,也在 protected overri
我有一个有两种形式的项目。第一个是 JFrame,第二个是 JInternalFrame。我制作了第一个类似 MDI 表单的表单。当我单击第一个表单的菜单时,应该显示第二个表单,其中包含来自 Ms.
当我在我的 C# 应用程序中从 form_load 中抛出异常时,它在平台为 x64 时不起作用。 (对于 x86,它的行为符合预期) 当我单步执行代码时,我到达了抛出异常的那一行,然后它立即跳转到
我通过将数据显示到数据 GridView 来完成一个窗口窗体应用程序。但是在datagridview中显示数据时出现了一些问题。 函数: private void MySQL_ToDatagridvi
哪个先执行? Form_Load 事件还是组件的初始化? (C# 窗体) 最佳答案 组件将在表单加载前初始化。 参见 this有关表单事件顺序的文章。 关于c# - 哪个先执行? Form_Load
我在MS Access VBA中写了一段代码,如下: Private Sub Form_Load() MsgBox "loggedIn = " + CStr(loggedIn) If
在 Visual Studio 上,如果我创建一个新的 Windows 窗体并将以下内容放入 Form_Load 事件中: throw new Exception(); 没有任何反应。我可以在这里打个
我是一名优秀的程序员,十分优秀!