小编Kat*_*ate的帖子

在c#中使用后,我是否必须取消订阅按钮事件?

我正在使用Windows窗体.

我的C#应用​​程序包含100个user controls.user controls当我需要并隐藏其余部分时,我会显示/隐藏其中一个.其中每个user controls都有30个buttons,我button在构造函数中订阅了以下事件:

public UserControl1()
{
    InitializeComponent();

    button1.Click += new EventHandler(MyButtonClick);
    button2.Click += new EventHandler(MyButtonClick);
        .

        .
    button30.Click += new EventHandler(MyButtonClick);
}

void MyButtonClick(object sender, EventArgs e)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

因此,当我运行应用程序时,所有100个User controls订阅30 buttons事件和一些user controls订阅事件但在使用应用程序期间从不使用它们.

我读了一些关于退订事件,在这里这里,但一些答案,说你应该取消,因为它会导致内存泄漏,有人说你没有,所以答案尚不清楚.

我的问题是,button在使用它之后我必须取消订阅事件:例如:当我显示/隐藏a时user control.如果是,我如何button在显示a时从事件user control订阅,在未显示时取消订阅.

c#

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

如何在 c# 中将文本框值转换为双精度值?

我是 C# 的新手并使用 Windows 窗体。我有 2 个文本框textbox1textbox2.

假设 textbox1 的值为 22,当我单击 textbox2 时,textbox1 中的值应更改为双倍 (22.00)。

textbox1.text = "22";
private void textBox2_MouseClick(object sender, MouseEventArgs e)
{
    // convert the value in textbox1 to double .
}
Run Code Online (Sandbox Code Playgroud)

c#

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

为什么FormShown事件不会在C#中被触发?

我是C#的新手,我正在使用Windows窗体.我有Form1Form2.在form1我使用以下代码显示form2:

Form2 frm2 = new Form2();
private void button1_Click(object sender, EventArgs e)
{          
    frm2.Show();
}
Run Code Online (Sandbox Code Playgroud)

我想要的是:我Form2每次都要展示一些活动.我放置messageBoxForm2Shown事件(进行测试),但它只被触发一次,下次我显示Form2它永远不会被解雇.我也尝试使用,formLoad但它只会被解雇一次,下次我表明form2它永远不会被解雇.我知道我可以使用frm2.ShowDialog()每次触发显示的事件但我不想出于某些原因.

private void Form2_Shown(object sender, EventArgs e)
{
    MessageBox.Show("Form2 is shown"); // this gets fired only once when form2 is shown.
                                       // when I show form2 again it does not get fired.
}

private void button_Hide_Form2_Click(object sender, EventArgs e)
{

    // this is in form2 …
Run Code Online (Sandbox Code Playgroud)

c# winforms

4
推荐指数
1
解决办法
156
查看次数

如何在C#中显示一个用户控件并隐藏其余用户控件

我是C#的新手,我正在使用Windows窗体.

我有Form120 buttons和20 user controls.我想要做的是:

当我单击button1 user control1显示并显示其余user controls隐藏时,单击button2 user control2显示,其余user controls隐藏,单击button3 user control3显示,其余user controls隐藏,依此类推.我可以通过设置其余部分UserControl.visible = True来显示一个user control并隐藏其余部分,user controls visibility = False但我不想写太多代码.

因此,我使用下面的简单代码只显示一个user control相关button的时候点击并隐藏剩下的部分user controls,但是这个代码没有运行它运行没有错误但user controls仍然可见.

任何人都知道为什么这段代码没有显示one user control并隐藏其余部分?我也很乐意听到其他想法.谢谢

private void button1_Click(object sender, EventArgs e) 
{
    foreach (Control ctrl in this.Controls)
    {
        if (ctrl .GetType() == typeof(UserControl))
        { …
Run Code Online (Sandbox Code Playgroud)

c#

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

如何从C#中的TimeSpan中删除毫秒?

我是c#的新手并使用Windows窗体.这段代码的结果是:01:38:07.0093844.任何人都知道如何从结果(ts)中删除毫秒部分(0093844)我希望结果看起来像这样:01:38:07(H:mm:ss)没有毫秒.

请帮帮忙.谢谢

string OldDateTime = "2016-03-02 13:00:00.597"; //old DateTime
DateTime CurrentDateTime = DateTime.Now;

TimeSpan  ts = CurrentDateTime.Subtract(Convert.ToDateTime(OldDateTime)); //Difference

//result of ts = 01:38:07.0093844
Run Code Online (Sandbox Code Playgroud)

c#

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

如何计算C#中数字的百分比?

我是C#的新手,我正在使用Windows窗体.我想用简单的数学计算一个数字的百分比.例如:

计算80%的25%.

double result` = (80 / 100) * 25
Run Code Online (Sandbox Code Playgroud)

结果= 20

另一个例子:30%的25%= 7.5

但是,当我测试这种计算百分比的方法时,我总是得到零结果 MessageBox.Show()

private void button1_Click(object sender, EventArgs e)
{
    double result;             

    result = (80 / 100) * 25;
    MessageBox.Show(result.ToString());
}
Run Code Online (Sandbox Code Playgroud)

MessageBox.Show()始终显示显示零的结果,我想MessageBox.Show(result.ToString("F"))MessageBox.Show(result.ToString("0.00")),结果仍然是零.我不知道为什么我会变零.请帮我如何计算百分比.

谢谢

c#

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

如何将Windows窗体适合/重新调整为任何屏幕分辨率?

我知道这是重复的问题,但我检查了所有其他相关的问题,他们的答案没有帮助(结果仍然与屏幕截图2中显示的相同)

screenshot1

我是c#windows表单的新手.如屏幕截图1所示,我有Form1一些控件,每组控件都放在一个面板中.我在PC1中设计了应用程序,如屏幕截图1所示,它符合屏幕分辨率并且运行良好.

Screenshot2

我的应用程序是在1366 x 768屏幕分辨率下开发的(如屏幕截图1所示)但是当我在具有不同显示器尺寸和不同屏幕分辨率的不同计算机(PC2)中运行此应用程序时,表单显得太大而且部分应用程序丢失或者是离开屏幕.

然而,我使用Anchors解决了这个问题但是出现了另一个问题:用户控件没有重新调整大小(如屏幕截图2所示),部分内容被剪切或移至panel1下.我不知道问题是与用户控制有关还是与Form1中的所有控件有关(他们应该自己调整大小)

我甚至尝试了以下代码,但结果仍然相同:

this.WindowState = FormWindowState.Maximized;
this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.WorkingArea.Size;
Screen.PrimaryScreen.WorkingArea
Run Code Online (Sandbox Code Playgroud)

昨天我一直在寻找解决这个问题,但我失败了,请帮助我任何想法/建议它可能会起作用.谢谢

c# winforms

2
推荐指数
1
解决办法
9094
查看次数

如何在C#中的DataGridView中水平跨越一行?

截图

我是新手C#和使用者Windows Forms.

如截图所示,DataGridView当我点击取消按钮时,是否有人知道如何在一个选定行中水平交叉(制作十字线)?

我在网上搜索但我没有得到解决方案.

private void ButtonCancel_Click(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)

c# winforms

2
推荐指数
1
解决办法
86
查看次数

如何在 C# 中的标签中显示货币符号?

我是 C# 新手,我正在使用 Windows 窗体。

\n\n

任何人都知道如何在label.\n 中显示货币符号,例如:

\n\n
double test = 2.5;\nlable1.text = test.Tostring();  \n
Run Code Online (Sandbox Code Playgroud)\n\n

结果将显示 2.5,但我想将其显示为 \xc2\xa32.5

\n\n

请帮助我该怎么做。谢谢

\n

c#

2
推荐指数
1
解决办法
2674
查看次数

如何在字符串C#中的最后3个字符前插入空格?

我正在使用Windows窗体,我正在构建用户进入英国PostCode的应用程序.

UK PostCode在最后3个字符之前包含空格,例如:

L22 9QY,L5 3SG,WA10 4RT所以总有空间刚刚过去的3个字符前.我想要做的是:当用户像这样输入他们的PostCode时,L53SG我想在最后3个字符之前插入空格,使其像这样L5 3SG.

说我们有:

string PostCode = "L53SG"; 
Run Code Online (Sandbox Code Playgroud)

如何在PostCode字符串中的最后3个字符前插入空格?

任何人都知道如何做到这一点.谢谢

c#

2
推荐指数
1
解决办法
824
查看次数

如何在C#中设置代码行之间的延迟?

我是c#的新手,我正在使用Windows窗体.

我有form13个buttons.我正在尝试设置3个按钮,以便在表单加载时/之后逐个显示.我使用了以下代码,但是当我运行程序时,它不起作用,同时出现3个按钮

 private void MainForm_Load(object sender, EventArgs e)
    {    //Hide all buttons
        button1.Visible = false;
        button2.Visible = false;
        button3.Visible = false;


        Thread.Sleep(500);

       //show buttons one by one
        button1.Visible = true;
        Thread.Sleep(500);
        button2.Visible = true;
        Thread.Sleep(500);
        button3.Visible = true;


    }
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么.任何人都可以帮助我如何在表单加载时/之后逐个显示3个按钮.我很高兴收到任何其他想法.谢谢

c# winforms

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

如何使用自定义时间将 datetimepicker 设置为星期一?

我是 C# 新手,我正在使用 Windows 窗体。

我正在尝试将单击按钮datetimepicker的时间设置为星期一(一周的第一天)10:00:00。我的意思是无论我想要哪一天,当我单击按钮时,datetimepicker都会转到同一周的星期一,时间为10:00:00

例如,现在的日期时间是22/3/2016 11:15:00我想将其设置为同一周(即昨天)的星期一上午 10 点的日期 =21/3/2016 10:00:00

我试过这段代码,但它去哪了23/3/2016 10:00:00是明天。

private void button1_Click(object sender, EventArgs e)
{
    dateTimePicker1.Value = 
      DateTime.Today.AddDays((int)DateTime.Today.DayOfWeek - 1).AddHours(10);
}
Run Code Online (Sandbox Code Playgroud)

有谁知道怎么做?请帮忙,谢谢

c#

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

我可以在我的应用程序中多次使用相同的SQL连接字符串吗?

我是SQL的新手.我正在使用C#构建应用程序,它使用本地SQL Server来读/写数据.我只有一个数据库,连接到SQL Server时连接字符串始终相同.

我的项目应用程序中有9个窗体,每个窗体使用相同的连接字符串,在某些形式中,我多次使用相同的连接.我可以在同一表单中多次使用相同的连接字符串吗?谢谢

这是连接字符串:

SqlConnection cn = new SqlConnection(@"Data Source=localhost; AttachDbFilename=E:\myDB\DB1.mdf; trusted_connection=yes
Run Code Online (Sandbox Code Playgroud)

c# sql

0
推荐指数
1
解决办法
2550
查看次数

标签 统计

c# ×13

winforms ×4

sql ×1