我正在使用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# 的新手并使用 Windows 窗体。我有 2 个文本框textbox1和textbox2.
假设 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#的新手,我正在使用Windows窗体.我有Form1和Form2.在form1我使用以下代码显示form2:
Form2 frm2 = new Form2();
private void button1_Click(object sender, EventArgs e)
{
frm2.Show();
}
Run Code Online (Sandbox Code Playgroud)
我想要的是:我Form2每次都要展示一些活动.我放置messageBox了Form2Shown事件(进行测试),但它只被触发一次,下次我显示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#的新手,我正在使用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#的新手并使用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#的新手,我正在使用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")),结果仍然是零.我不知道为什么我会变零.请帮我如何计算百分比.
谢谢
我知道这是重复的问题,但我检查了所有其他相关的问题,他们的答案没有帮助(结果仍然与屏幕截图2中显示的相同)
我是c#windows表单的新手.如屏幕截图1所示,我有Form1一些控件,每组控件都放在一个面板中.我在PC1中设计了应用程序,如屏幕截图1所示,它符合屏幕分辨率并且运行良好.
我的应用程序是在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#和使用者Windows Forms.
如截图所示,DataGridView当我点击取消按钮时,是否有人知道如何在一个选定行中水平交叉(制作十字线)?
我在网上搜索但我没有得到解决方案.
private void ButtonCancel_Click(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud) 我是 C# 新手,我正在使用 Windows 窗体。
\n\n任何人都知道如何在label.\n 中显示货币符号,例如:
double test = 2.5;\nlable1.text = test.Tostring(); \nRun Code Online (Sandbox Code Playgroud)\n\n结果将显示 2.5,但我想将其显示为 \xc2\xa32.5
\n\n请帮助我该怎么做。谢谢
\n我正在使用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#的新手,我正在使用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# 新手,我正在使用 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)
有谁知道怎么做?请帮忙,谢谢
我是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)