小编Def*_*ult的帖子

专注于画布中的边框

我有一个Canvas,里面有一个边框.现在我想把重点放在这个边界上.
有人可以告诉我这是怎么做到的?

wpf focus canvas border

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

确定MailItem是在Compose还是Read模式下打开

是否有某种方法可以确定是否MailItem正在打开ReadMail view(不确定这里的术语)或是否正在打开Compose view.也就是说,我打开了一封发给我的邮件,还是我打开邮件发送给某人.

我检查了MailItemInspector对象但找不到任何相关内容.不幸的是我不知道如何访问特定的属性(我在GetProperty()某处看到过某种方法)所以我不知道我是否可以通过它访问它..

我希望有一些我可以做的事情:

// where OutlookApp is my Outlok Application
Outlook.Inspector inspector = OutlookApp.ActiveInspector();
Outlook.MailItem item = inspector.CurrentItem as Outlook.MailItem;
if (item.IsOpenInComposeView)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

c# outlook outlook-2007

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

冻结部分代码以防止格式化

有没有办法在Visual Studio中锁定或冻结部分代码以防止格式化?

我想保护以下代码:

Method("This is a long text", 12 , true  );
Method("Hi",                  558, true  );
Method("Short text",          1  , false );
Run Code Online (Sandbox Code Playgroud)

格式化为:

Method("This is a long text", 12, true);
Method("Hi", 558, true);
Method("Short text", 1, false);
Run Code Online (Sandbox Code Playgroud)

但仍然能够格式化文档的其余部分.

c# vb.net visual-studio

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

RelayCommand CanExecute行为

我有以下命令:

<Button x:Name="bOpenConnection" Content="Start Production"
        Grid.Row="0" Grid.Column="0"
        Height="30" Width="120" Margin="10"
        HorizontalAlignment="Left" VerticalAlignment="Top" 
        Command="{Binding Path=StartProductionCommand}"/>
Run Code Online (Sandbox Code Playgroud)

StartProductionCommand = new RelayCommand(OpenConnection, CanStartProduction);

private bool CanStartProduction()
{
   return LogContent != null && !_simulationObject.Connected;
}
Run Code Online (Sandbox Code Playgroud)

CanStartProduction仅在我重新调整UI大小并且未动态更新时才会进行检查.知道为什么每次更改值都没有更新吗?

c# wpf mvvm mvvm-light

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

每按一次键只允许1个值

我有richtextbox一个windows form用户可以输入文本,但它需要建立这样,如果用户按下一个关键,他们只拿到1个字符.

例如,如果他们hold down A那么它只会输入A而不是AAAAAAAAAAAAAAAAAAAAAAAAAAAAA等等.

从按键关闭到按键启动的那一刻起,我只想将其转换为1值.

我有什么想法可以达到这个目的吗?

我想我需要使用KeyDown,KeyUp但我不确定过去.

.net c# richtextbox winforms

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

Modbus通讯

我正在使用C#通过modbus rs485 rs2322相电表进行通信,其中包括电源电压.

我必须通过总线发送数据,以便我可以接收读数.
我连接了普通电线并短接了发送和接收.

收到数据并触发此事件:

private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    byte[] buff = new byte[sp.BytesToRead];

    //Read the Serial Buffer
    sp.Read(buff, 0, buff.Length);
    string data= sp.ReadExisting();

    foreach (byte b in buff)
    {
        AddBuffer(b); //Add byte to buffer
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将此缓冲区发送到另一个函数,即:

private void AddBuffer(byte b)
{
    buffer.Add(b);

    byte[] msg =  buffer.ToArray();

    //Make sure that the message integrity is correct
    if (this.CheckDataIntegrity(msg))
    {
        if (DataReceived != null)
        {
            ModbusEventArgs args = new ModbusEventArgs();
            GetValue(msg, …
Run Code Online (Sandbox Code Playgroud)

c# modbus crc

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

重启已完成的任务

我有一个在我的应用程序后台定期运行的任务.当我第一次运行它时一切正常,任务运行完美结束.但是第二次和之后,每当我使用task.Start()它时抛出一个异常:

mscorlib.dll中发生未处理的"System.InvalidOperationException"类型的异常附加信息:可能无法在已完成的任务上调用Start.

我确信我的任务功能跑到了最后..我该怎么做才能定期运行任务?

c# task

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

将通用T转换为System.Enum

我有一个Enums 的列表作为一个IEnumerable<T>,我需要循环每个项目并得到它的描述如下:

IEnumerable<T> values = (T[])Enum.GetValues(typeof(T));
foreach (Enum value in values)
{
    String mylist = Common.MyExtensions.getEnumDescription(value);
}

...

public static string getEnumDescription(Enum value)
{
    FieldInfo fi = value.GetType().GetField(value.ToString());

    DescriptionAttribute[] attributes =    (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);

    if (attributes != null && attributes.Length > 0)
    {
        return attributes[0].Description;
    }
    else
        return value.ToString();
}
Run Code Online (Sandbox Code Playgroud)

这会在foreach部分产生错误

无法将"T"转换为System.Enum.

不是首先IEnumerable列出的System.Enum?什么样的演员可以做到这一点?

c# enums

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

delete(Object)是否等效于调用Object .~Object()

我有几个连接到AngelScript引擎的类.这个引擎使用有趣的方式来分配对象:它分配所需的内存量(可能有malloc()),当作者建议使用这样的结构在这个内存中创建对象时:

static void Constructor(ObjectType *thisPointer)
{
    new(thisPointer) ObjectType();
}
Run Code Online (Sandbox Code Playgroud)

和这样的代码来销毁对象:

static void Destructor(ObjectType *thisPointer)
{
     thisPointer->~ObjectType();
}
Run Code Online (Sandbox Code Playgroud)

我有几个问题:

  • 这种方式使用析构函数是正确的吗?(Eclipse判断这是一个错误)据我所知,这段代码应该调用析构函数而不释放内存(调用free())
  • 是否可以使用delete(thisPointer)(或类似的东西)而不是这种结构,它是否相同?(至少这段代码在编译和运行时没有错误)
  • 是否还有其他方法可以在不释放内存的情况下调用析构函数?

先感谢您.

c++ memory

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

循环遍历XAML定义的标签

我有一个带有许多标签的WPF应用程序.

<Label x:Name="label1" />
<Label x:Name="label2" />
<Label x:Name="label3" />
....
Run Code Online (Sandbox Code Playgroud)

我不希望逐个给每个标签一个值,如:

label1.content= 1;
label2.content= 20;
label3.content= 30;
....
Run Code Online (Sandbox Code Playgroud)

我想要更像这样:

for(int i = 1; i<40 ;i++)
{
    label"i".content = i*10;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

.net c# wpf loops

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