小编Ken*_*Kin的帖子

如何使用定时器在for循环中添加延迟

通过以下代码(timer2的间隔为1000)

private void timer1_Tick(object sender, EventArgs e) {
    timer7.Enabled=false;
    timer8.Enabled=false;
    lblTimer_Value_InBuildings.Text="0";
}

private void timer2_Tick(object sender, EventArgs e) {
    lblTimer_Value_InBuildings.Text=(int.Parse(lblTimer_Value_InBuildings.Text)+1).ToString();
}
Run Code Online (Sandbox Code Playgroud)

我们不能在for循环中创建延迟

for(int i=1; i<=Max_Step; i++) { 
    // my code... 

    // I want delay here: 
    timer1.Interval=60000; 
    timer1.Enabled=true; 
    timer2.Enabled=true; 

    // Thread.Sleep(60000); // makes no change even if uncommenting
}
Run Code Online (Sandbox Code Playgroud)

我是否取消对该行Thread.Sleep(60000);或不行,我们什么也看不到有改变lblTimer_Value_InBuildingstimer2_Tick.

你能给我一个解决方案(有或没有计时器)?

c# sleep timer windows-applications

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

将字符串转换为十进制 - 保留数字

例如,我有一个允许用户输入价格的表格10.00.

但是,由于表单是purley文本,用户可以输入$10.0010.00 for book.我无法改变UI,这必须在引擎盖下完成.所以基本上我只想要一个十进制结果的使用类型.

我开始这样做了

public decimal FilterPrice(dynamic price) {
    string convertPrice=price.ToString();

    var filterNumber=
        from letter in convertPrice
        where char.IsDigit(letter)
        select letter;

    return something;
}
Run Code Online (Sandbox Code Playgroud)

然而,这将剥离..任何想法如何做到这一点?

c#

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

如何存储方法的输出?

我正在寻找简单的方法将方法的输出存储在某种变量中,以便它可以被另一个类使用.

例如:

partial class Form1 {
    public string orderNumber() {
        string ord="ORD"+get_next_id()+DateTime.Now.Year;
        return ord;
    }
}
Run Code Online (Sandbox Code Playgroud)

Form1用户的实例中输入购买详细信息,例如名称,地址......当用户点击添加条目按钮时,详细信息将保存在数据库中,ordernumber并由上面的代码生成.同时,当用户单击添加条目时,它会终止当前表单并显示另一个使用ordernumber之前生成的表单.当我喜欢的时候

Form1 m=new Form1();
Run Code Online (Sandbox Code Playgroud)

并执行类似的操作(以下是伪代码)

m.orderNumber=string orderNUm. 
Run Code Online (Sandbox Code Playgroud)

它生成不同的订单号,我不想要.我想使用由数据库保存的订单号Form1.

我想将那个ord存储在某处,以便我可以将它传递给另一个类.

c# winforms

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

转换varchar值时转换失败

当我尝试运行它时,它给我以下错误消息:

将varchar值'category_id'转换为数据类型int时转换失败.

这是我的SQL和参数代码,我认为它应该可以工作,但事实并非如此.

mycmd.CommandText="SELECT * FROM categories WHERE @db_property = @property_id"; 

// This contains a string "category_id", which is correct.
mycmd.Parameters.Add("@db_property", SqlDbType.VarChar).Value=db_property_field; 

// This contains an Int, referring to the category_id in database. As of now, this is 1
mycmd.Parameters.Add("@property_id", SqlDbType.Int).Value=property_id; 
Run Code Online (Sandbox Code Playgroud)

在我完成这段代码之后,我通过Reader运行它,这就是我收到上面的错误消息的地方.一直问老师,我班上优秀的学生,没有人能找到问题所在的线索.

c# sql parameters error-handling type-conversion

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

在c#.net中使用对象,就像vb.net一样

我在VB.Net中有一个调用窗体按钮的方法:

Private Sub BUTTON_CAL( _
    ByVal frm As Object, ByVal e As System.Windows.Forms.KeyEventArgs)

    If e.KeyCode = Keys.A AndAlso e.Modifiers = Keys.Control Then
        If frm.AddButton.Enabled = True Then Call frm.AddButton.PerformClick()
        e.SuppressKeyPress = True
    End if
End Sub
Run Code Online (Sandbox Code Playgroud)

我已将此代码转换为c#

public static void BUTTON_CAL(object frm, System.Windows.Forms.KeyEventArgs e) {
    if(e.KeyCode==Keys.A&&e.Modifiers==Keys.Control) {
        if(frm.AddButton.Enabled==true) {
            frm.AddButton.PerformClick();
        }
        e.SuppressKeyPress=true;
    }
}
Run Code Online (Sandbox Code Playgroud)

在C#.Net中我收到错误

'object'不包含AddButton'的定义,并且没有扩展方法'AddButton'可以找到第一个'object'类型的agument(你是否缺少using指令或汇编引用?)

.net c# vb.net

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

如何使用不同的名称制作一定数量的变量?

我已经开始使用C#编程来开发一些控制台应用程序,我想知道如何以更有效的方式使用不同的名称来创建一定数量的变量.现在我正在做这样的事情:

for(int i=1; i<=x; i++)
    switch(i) {
        case 1:
            Player player1=new Player(i, x);
            break;
        case 2:
            Player player2=new Player(i, x);
            break;
        case 3:
            Player player3=new Player(i, x);
            break;
        case 4:
            Player player4=new Player(i, x);
            break;
        case 5:
            Player player5=new Player(i, x);
            break;
        case 6:
            Player player6=new Player(i, x);
            break;
    }
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有更有效的方法来解决这个问题以及这些方法是什么.

c# console loops space-efficiency

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

如何只通过一次交换来交换枚举项?

我正在尝试交换一个特定项目的顺序IEnumerable.

鉴于IEnumerable<int> a;以下要素:

1,2,3,4,5

我想要做的是写一个交换迭代器,结果a.Exchange(1, 2)是:

1,3,2,4,5

但是我不希望这个简单的目的可以多次迭代枚举.到目前为止我所拥有的是:

public static IEnumerable<T> Exchange<T>(
    this IEnumerable<T> source, int index1, int index2) {
    var i=0;

    foreach(var y in source) {
        if(index1==i) {
            var j=0;

            foreach(var x in source) {
                if(index2==j) {
                    yield return x;
                    break;
                }

                ++j;
            }
        }
        else {
            if(index2==i) {
                var j=0;

                foreach(var x in source) {
                    if(index1==j) {
                        yield return x;
                        break;
                    }

                    ++j;
                }
            }
            else {
                yield return y;
            }
        } …
Run Code Online (Sandbox Code Playgroud)

c# linq ienumerable enumeration

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

程序类中的抽象方法与静态方法

假设我有一个简单的继承链,其中Employee是抽象基类,CheckoutManager在这个纯粹的说明性控制台应用程序中继承它.现在我想有一个将在类型的对象的方法ManagerCheckout并返回取决于该公司员工的位置奖金的整数金额.我有一些初步的想法,如果这个控制台应用程序有一天成长为一个数据驱动的Web应用程序,我想知道每种方法的潜在长期缺陷或收益.

  1. 使用继承类的通用接口.我的基类看起来像

    abstract class Employee
        {
            public int EmployeeId { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
    
    
        }
    
    Run Code Online (Sandbox Code Playgroud)

    我的派生类实现了一个界面,用于将员工信息打印到调用的控制台,IPrintable并且只有一个方法可以执行此操作.虽然这个界面与赠送奖金无关,但我在课堂上用我的Main方法生活模拟了以下内容,程序运行正常.

    static int GiveBonusesViaInterface(IPrintable i)
            {
                if (i is Checkout)
                    return 1000;
                else 
                    return 2000;
    
    
            }
    
    Run Code Online (Sandbox Code Playgroud)

    在我看来,如果我想为此使用一个接口,我应该制作另一个特定于加注而不是在已经实现的接口上使用它(但这是另一天的另一个问题).

  2. 在基类中使用静态方法

    public static int GiveBonus(Employee e)
            {
                if (e is Manager)
                    return 2000;
                else
                    return 1000;
            }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在抽象基类中创建一个抽象方法,并在他们认为合适的情况下实现nave派生类

    abstract class Employee …
    Run Code Online (Sandbox Code Playgroud)

c# visual-studio-2010

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

如何创建生成的对象名称?

如何创建生成的对象名称?例如:

ObjectEx "name" = new ObjectEx();
Run Code Online (Sandbox Code Playgroud)

编辑:

该对象将由用户输入命名.代码将是:

Console.Write("Input new user's name: ");
string newUsersName = Console.ReadLine();
(Create ObjectEx)
Run Code Online (Sandbox Code Playgroud)

EDIT2:

我有一个处理所有s 的Dictionaryfor ObjectEx(Person)ObjectEx.

Person是真正的类名,抱歉制作示例对象ObjectEx.

public static List<Person> persons = new List<Person>();
Run Code Online (Sandbox Code Playgroud)

c# object

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

C#中的开关是空的情况还是下一个非空的?

使用以下代码:

case "GETSITES":
case "SITESETUP":
    MessageBox.Show("Help! I am suffering from the Air-Conditioned Nightmare!!!");
    // ...
Run Code Online (Sandbox Code Playgroud)

MessageBox.Show被执行或者开关值为"GETSITES"还是"SITESETUP"

或者当开关值是"SITESETUP"

既然"GETSITES"没有休息,我想是的,但我不确定.


UPDATE

我想我应该把我的问题写成:

这两个代码片段在语义上是等价的吗?

c# language-design switch-statement

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

一副牌的算法

我有这个算法用于有52张牌的牌组,让我们说i=10:

int suit = i / 13;
int cardValue = i % 13;
Run Code Online (Sandbox Code Playgroud)
  • suit适用from 0 to 3于心形,钻石,黑桃,俱乐部
  • cardValue适用from 0 to 12于Ace,2,3,...,Jack,King,Queen

我如何从已知中推断suitcardValue获得回报i

c# algorithm

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