创建状态栏

本文关键字:状态栏 创建 | 更新日期: 2023-09-27 17:49:16

我正在使用c#脚本将表中的行从一个服务器移动到另一个服务器。请不要说我要使用SSIS组件。循环传入的数据集使用一个for循环,我想看到当前的迭代,即在GUI中的for循环索引盒子。我可以使用MessageBox.Show("Text"),但是我需要按ok/cancel来允许代码继续。所以,我想到了用状态栏来代替。我试过了我上网了

下面示例中的this.Controls.Add(mainStatusBar);行导致错误-

csproj。ScriptMain'不包含'Controls'的定义没有扩展方法"Controls"接受类型为的第一个参数".csproj。ScriptMain'可以找到(您是否缺少using指令)还是程序集引用?)

尽管添加了引用- System.Windows.Forms.dll并执行了a,但仍会发生这种情况保存所有(如Ctrl+Shift+S)。该脚本使用System.Windows.Forms;导入了。

为什么我得到这个错误,我如何修复它?

代码——

protected StatusBar mainStatusBar = new StatusBar();
protected StatusBarPanel statusPanel = new StatusBarPanel();
protected StatusBarPanel datetimePanel = new StatusBarPanel();
private void CreateStatusBar()
{
    // Set first panel properties and add to StatusBar
    statusPanel.BorderStyle = StatusBarPanelBorderStyle.Sunken;
    statusPanel.Text = "Application started. No action yet.";
    statusPanel.ToolTipText = "Last Activity";
    statusPanel.AutoSize = StatusBarPanelAutoSize.Spring;
    mainStatusBar.Panels.Add(statusPanel);
    // Set second panel properties and add to StatusBar
    datetimePanel.BorderStyle = StatusBarPanelBorderStyle.Raised;
    datetimePanel.ToolTipText = "DateTime: " + 
    System.DateTime.Today.ToString();
    datetimePanel.Text = System.DateTime.Today.ToLongDateString();
    datetimePanel.AutoSize = StatusBarPanelAutoSize.Contents;
    mainStatusBar.Panels.Add(datetimePanel);
    mainStatusBar.ShowPanels = true;
    // Add StatusBar to Form controls
    this.Controls.Add(mainStatusBar);
}
private void button1_Click(object sender, EventArgs e)
{
    statusPanel.Text = "Button is clicked.";
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    statusPanel.Text = "CheckBox is checked.";
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
    statusPanel.Text = "TextBox edited.";
}

创建状态栏

程序不知道this应该在此语句中引用表单this.Controls.Add(mainStatusBar);

你必须按照百分比建议的方法去做。

正确的用法如下:

例如

public partial class someForm : Form
    {
        public someForm()
        {
            InitializeComponent();
        }
    }
partial class someForm
    {
        private void InitializeComponent()
            {
                this.mainStatusBar = new StatusBar();
            }
    }

还有,看看这篇文章:

什么时候使用&;this&;关键字?

如果你在SQL Server上运行脚本,你不能添加控制到你的脚本,因为你没有一个窗口。

你可以做的是创建一个独立的GUI应用程序,它将与脚本通信(例如通过TCP)。

或者您可以创建一个文件,并在执行一次迭代时向其中添加新的文本。

使用mTail实时查看文件内发生的情况。

mTail——http://ophilipp.free.fr/op_tail.htm

您正在使用的类没有Controls,因为它不是Form

您可以通过以下方式创建Form,并为其添加状态栏:

代替

this.Controls.Add(mainStatusBar);

Form window = new Form();
window.Controls.Add(mainStatusBar);
window.ShowDialog();

最后一行将显示带有状态栏的窗口