标签: winforms

删除FTP服务器中的文件夹和子文件夹

我在FTP服务器中创建了文件夹,其中包含登录到服务器的年份,月份和日期,我们可以看到当年点击它显示月份时创建的文件夹,当我点击月份时显示日期.现在我需要删除此文件夹.

下面是我在FTP服务器中删除文件夹的代码

FtpWebResponse responseFileDelete = (FtpWebResponse)ftpRequest.GetResponse();
Run Code Online (Sandbox Code Playgroud)

System.dll中出现未处理的"System.Net.WebException"类型异常
附加信息:远程服务器返回错误:(550)文件不可用(例如,找不到文件,没有访问权限).

你能帮我删除一个文件夹吗?

c# ftp ftpwebrequest winforms

3
推荐指数
1
解决办法
1637
查看次数

如果没有其他实例,请打开表单打开 - 将类型传递给方法

我想简化一些代码.因此,如果某个表格已经打开,我想制作一个检查功能.现在,我的开始表单上的每个按钮后面都有代码.

private void button_parts_Click(object sender, EventArgs e)
{
    FormCollection fc = Application.OpenForms;
    foreach (Form frm in fc)
    {
        if (frm is frm_parts) { return; }
    }
    frm_Teile newForm = new frm_parts();
    newForm.Show();
}
Run Code Online (Sandbox Code Playgroud)

现在我希望有类似的东西:

private void button_parts_Click(object sender, EventArgs e)
{
    StartNewForm(frm_parts);
}

private void StartNewForm(Type myForm)
{
    FormCollection fc = Application.OpenForms;
    foreach (Form frm in fc)
    {
        if (frm is myForm) { return; }
    }
    myForm newForm = new myForm();
    newForm.Show();
}
Run Code Online (Sandbox Code Playgroud)

但我无法将类型传递给函数 编辑:你当然可以,但我不知道如何以及从何处开始.

是否有(另一种)方式来实现我需要的东西?

c# forms winforms

3
推荐指数
1
解决办法
171
查看次数

我必须调用Application.ExitThread()吗?

using System.Windows.Forms;

public class App
{
    [STAThread]
    public static void Main()
    {
        string fname;
        using (var d = new OpenFileDialog())
        {
            if (d.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            fname = d.FileName;
        }
        //Application.ExitThread();
        for (; ;)
            ;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码显示了一个文件对话框.一旦我选择了一个文件并按下open,就会执行for循环,但是(冻结的)对话框仍然存在.

取消注释后Application.ExitThread(),对话框会按预期消失.

这是否按预期工作?为什么不让using窗户消失?我在哪里可以找到更多关于此的信息?

.net c# mono dialog winforms

3
推荐指数
2
解决办法
601
查看次数

异步将图像从Url加载到PictureBox

我想在Windows窗体应用程序上从Web加载图像,一切都很好,代码工作正常,但问题是应用程序停止工作,直到加载完成.我希望看到并使用应用程序,而无需等待加载.

PictureBox img = new System.Windows.Forms.PictureBox();
var request = WebRequest.Create(ThumbnailUrl);

using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
    img.Image = Bitmap.FromStream(stream);
}
Run Code Online (Sandbox Code Playgroud)

.net c# webrequest picturebox winforms

3
推荐指数
2
解决办法
3555
查看次数

C#:尝试在不同的类中使用控件元素 - "需要对象引用"

我是C#的新手(如果我的问题是noobish,我道歉 - 我在教自己,所以这是一个坎坷的过程).我正在尝试开发一个winform,因为有些方法很长,我试着将它保存在几个类中.这就是我希望实现的目标:

public partial class formMainForm : Form
{
    public formMainForm()
    {
        InitializeComponent(); 
    }

    private void UpDown1_ValueChanged(object sender, EventArgs e)
    {
        longCalculations.LongMethod1(); 
    }
}

public class longCalculations
{
    private void LongMethod1()
    {
        // Arbitrarily long code goes here
    }
}
Run Code Online (Sandbox Code Playgroud)

我这样做是为了保持formMainForm课堂整洁,并能够将任何计算分成可管理的块.但是,我在非表单类中遇到使用表单控件(例如复选框,数字上下控件等)的问题.

如果我保持原样(例如CheckBox1)我得到一个名称在当前上下文错误中不存在.我四处搜索,发现这是因为该框是在不同的类中定义的.但是,如果我将其更改为formMainForm.CheckBox1,则错误现在是非静态字段,方法或属性需要对象引用.再次,我环顾四周,看来这是由于表单初始化方法不是静态的.

如果我换public formMainForm()static formMainForm(),错误现在移动到InitializeComponent();,我不知道从哪里开始.我也尝试过对该formMainForm()方法进行实例化,但是没有做任何事情(我试图使用的代码如下.我发现它在这个网站的某个地方作为类似问题的答案).

private void formLoader(object sender, EventArgs e)
{
    shadowrunMainForm runForm = new shadowrunMainForm();
    runForm.Show();
} …
Run Code Online (Sandbox Code Playgroud)

c# class winforms

3
推荐指数
1
解决办法
64
查看次数

最大化另一个运行程序的窗口

如何以编程方式最大化我当前在我的电脑上运行的程序.例如,如果我WINWORD.exe在任务管理器中运行.我如何最大化它?

在我的代码中,我尝试过:

private void button1_Click(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Maximised;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它只显示我的应用 我想它最大化另一个exe,但如果它找不到它然后我想它退出.

.net c# .net-4.0 winforms

3
推荐指数
1
解决办法
4370
查看次数

在Windows窗体中切换开关控件

我正在设计一个Toggle Switch控件CheckBox,但是目前我的控件只画了一个圆圈.如何绘制如下图像的圆形图形,如何根据控件的值更改圆的位置以表示已检查和未检查的状态,如下图所示:

在此输入图像描述

这是我的代码:

public class MyCheckBox:CheckBox
{
    public MyCheckBox()
    {
        this.Appearance = System.Windows.Forms.Appearance.Button;
        this.BackColor = Color.Transparent;
        this.TextAlign = ContentAlignment.MiddleCenter;
        this.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
        this.FlatAppearance.BorderColor = Color.RoyalBlue;
        this.FlatAppearance.BorderSize = 2;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        this.OnPaintBackground(e);
        using (var path = new GraphicsPath())
        {
            var c = e.Graphics.ClipBounds;
            var r = this.ClientRectangle;
            r.Inflate(-FlatAppearance.BorderSize, -FlatAppearance.BorderSize);
            path.AddEllipse(r);
            e.Graphics.SetClip(path);
            base.OnPaint(e);
            e.Graphics.SetClip(c);
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            if (this.Checked)
            {
                using (var p = new Pen(FlatAppearance.BorderColor,
                                       FlatAppearance.BorderSize))
                {
                    e.Graphics.DrawEllipse(p, r);
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# checkbox winforms toggleswitch

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

Winforms:平滑面板的圆形边缘

我已经按照本教程创建了一个圆角面板.本教程中的代码是在vb中,但我能够将其转换为C#,所以这是我的代码:

    public class SPanel : Panel
{
    Pen pen;
    float penWidth = 2.0f;
    int _edge = 20;
    Color _borderColor = Color.White;
    public int Edge
    {
        get
        {
            return _edge;
        }
        set
        {
            _edge = value;
            Invalidate();
        }
    }

    public Color BorderColor
    {
        get
        {
            return _borderColor;
        }
        set
        {
            _borderColor = value;
            pen = new Pen(_borderColor, penWidth);
            Invalidate();
        }
    }

    public SPanel()
    {
        pen = new Pen(_borderColor, penWidth);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        ExtendedDraw(e);
        //DrawBorder(e.Graphics); …
Run Code Online (Sandbox Code Playgroud)

c# graphics panel winforms

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

如何在Form的Center中设置FlowLayoutPanel内容

我在a中有一些Button控件FlowLayoutPanel,我想将它们精确地设置在中间底部Form.在下面的图像中,我Button通过FlowLayoutPanel手动将填充设置为400来精确地设置在中间.

最大

但是当我尝试调整大小或恢复按钮时,由于手动设置填充,不再在中间.

分

FlowLayoutPanel每当我尝试调整大小时,我可以做些什么来设置按钮.我正在按照这篇文章的答案, 动态添加和删除按钮.

.net c# flowlayoutpanel windows-forms-designer winforms

3
推荐指数
1
解决办法
4027
查看次数

将系统默认上下文菜单添加到无边界Windows窗体

我从Windows窗体中删除了默认边框,并创建了自己的标题,该标题具有与默认Windows相同的功能。

其中之一是右键单击时显示的上下文菜单:

默认上下文菜单

是否可以将其分配给我的服装标头?

如果您想发布代码,我希望使用vb,但是c#也可以。

.net c# vb.net contextmenu winforms

3
推荐指数
1
解决办法
900
查看次数