小编Gro*_*roo的帖子

C#事件,如何提高它们?

我正在尝试学习在C#中提升和处理事件.

这是我的简单例子:

///////////////  creating a new BALL object ///    
ballClass ball = new ballClass();

void button1_Click(object sender, EventArgs e)
{
    // this should make the BALL object raise an event
    ball.onHit();
    label1.Text = "EVENT SEND";
}

// when event is fired, label text should change
void BallInPlayEvent(object sender, EventArgs e)
{
    label2.Text = "EVENT FOUND!";
}
Run Code Online (Sandbox Code Playgroud)

和球类:

class ballClass
{
    public event EventHandler BallInPlay;

    public void onHit()
    {
        this.BallInPlay ///// ??? how should i raise this event?
    }
}
Run Code Online (Sandbox Code Playgroud)

在电话中我无法理解, …

c# events

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

时间跨度问题

我写了一个小代码,如果一个zip文件超过5小时(300薄荷),检查时间例程,然后必须删除该文件.我有这个代码.但它没有删除任何文件.

string[] zipfiles = Directory.GetFiles("D:\\images\\zipFiles\\", "*.zip*");

foreach (string zip in zipfiles)
{
    FileInfo zipinfo = new FileInfo(zip);
    string t = zipinfo.CreationTime.ToString();
    TimeSpan span = DateTime.Now - zipinfo.CreationTime;
    int k =0;
    k = span.Minutes;
    if (k > 300)
    {
        zipinfo.Delete();
    }
    else
    { 

    }
}
Run Code Online (Sandbox Code Playgroud)

c# timespan

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

每秒加载新图像

我需要加载每秒(或两个)新图像.

以下代码不起作用:

System.Threading.Thread.Sleep(2000);
this.Image_LoadImage.Source = new BitmapImage(new Uri(@"D:\\connect2-1.gif"));
System.Threading.Thread.Sleep(2000);
this.Image_LoadImage.Source = new BitmapImage(new Uri(@"D:\\connect3-1.gif"));
Run Code Online (Sandbox Code Playgroud)

我看到的是该应用程序睡眠4秒,然后出现第二个图像.

我该怎么做?谢谢.

.net c# wpf multithreading image

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

如何检查单词是否由数组中的其他字符串组成

我想检查字符串是否是从给定字符串集中的另外两个字符串构建的.

例如,给定以下数组:

var arr = new string[] { "b", "at", "bat", "ct", "ll", "ball", "ba"};
Run Code Online (Sandbox Code Playgroud)

我想只返回"蝙蝠""球".

那是因为它们可以由数组中的其他两个元素组成,如下所示:

"bat" = "b" + "at"
"ball" = "ba" + "ll"
Run Code Online (Sandbox Code Playgroud)

我试过用foreach循环来做这件事,但我不是很正确.任何帮助都感激不尽.

我做过类似的事情

foreach(var x in list)
{
    if (dataaccess.IsThreeCharacters(x))
    {
        for (int i = 0; i < arr.Length; i++)
        {
            for (int j = i; j < arr.Length; j++)
            {
                if(x == arr[i] + arr[j])
                {
                    newlist.Add(x);
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# arrays string

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

有没有办法为多个数据库重用NHibernate SessionFactory?

就像标题所说,有没有办法SessionFactory为多个数据库"重用" ?由于实例化SessionFactory需要时间,我想知道是否可以集中这些实例并重用它们,只更改连接/数据库名称.显然,第一级缓存将被清除,但我试图避免实例化工厂本身所涉及的惩罚.

背景是我可以拥有几个具有完全相同模式的小型"可插拔"数据库,因此NHibernate不需要每次都重建所有映射.

.net nhibernate sessionfactory pooling

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

如何向用户指示哪个textBox为空或为空?

我有一个带有9个TextBox控件的WinForm应用程序.如何提醒用户哪些文本框为空或为空?

var incompleteTextBoxes = this.Controls.OfType<TextBox>().Where(tb => string.IsNullOrWhiteSpace(tb.Text));    
foreach (var textBox in inCompleteTextBoxes)
{
    // give user feedback about which text boxes they have yet to fill out
}
Run Code Online (Sandbox Code Playgroud)

c# winforms

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

产量返回IEnumerable <IEnumerable <... >>

以下代码List<string>在yield返回之前创建一个中间实例并向其追加值.有没有一种好方法可以避免创建实例并且直接返回单元格值?

IEnumerable<IEnumerable<string>> GetStrValues()
{
    ......
        foreach (var r in rows)
        {
            var row = new List<string>();
            foreach (var c in r.Cells())
            {
                var value = getCellStr(c);
                row.Add(value);
            }
            yield return row;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# linq deferred-execution

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

用不同的编程结构替换`goto`

我试图用防御性编程来做这个小程序,但是我很难处理这个避免Loop-Goto,因为我知道这是BAD编程.我曾尝试过,并且做...而循环,但在一个案例中,我没有问题.当我要做另一个时,问题开始...而对于第二种情况("不插入空格或点击输入按钮").我尝试和嵌套做...虽然但在这里结果更复杂.

#include <ctype.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int i;
    int length;
    char giventext [25];        
    Loop:

    printf("String must have 25 chars lenght:\n");
    gets(giventext);

    length = strlen(giventext);

    if (length > 25) {
        printf("\nString has over %d chars.\nMust give a shorter string\n", length);
        goto Loop;
    }
    /* Here i trying to not give space or nothing*/
    if (length < 1) {
        printf("You dont give anything as a string.\n");
        goto Loop;
    } else {
        printf("Your string has %d\n",length);
        printf("Letter in lower …
Run Code Online (Sandbox Code Playgroud)

c defensive-programming repeat

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

为什么使用 %c 和 %d 格式化时此 C 代码的输出不同

看看下面的一段代码:

#include <stdio.h> 

int main() 
{ 
  int i;

  for (i = 48; i < 58; i++)
  {
    printf("%d", i);
  }
return 0; 
}
Run Code Online (Sandbox Code Playgroud)

输出是:48495051525354555657 但是,如果你改变printf("%d", i);printf("%c", i);输出变为:0123456789

不应同时输出48495051525354555657为什么代时输出不同的d使用c

c printf ascii string-formatting format-specifiers

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

C# 中的 BinaryReader 读取字符串不读取第一个字节

我正在使用 C# 中的 System.IO 中的 BinaryReader 读取二进制文件,但是,当使用 ReadString 时,它不会读取第一个字节,代码如下:

using (var b = new BinaryReader(File.Open(open.FileName, FileMode.Open)))
{
    int version = b.ReadInt32();
    int chunkID = b.ReadInt32();
    string objname = b.ReadString();
}
Run Code Online (Sandbox Code Playgroud)

这并不难,首先它读取两个整数,但应该返回 objame 的字符串是“bat”,而它返回的是“at”。

这与我读过的前两个整数有关系吗?或者可能是因为第一个 int 和字符串之间没有空字节?

提前致谢。

c# string binaryreader

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