小编Sae*_*ani的帖子

按钮文本属性中的下划线不会显示

在我的C#WinForms程序中,我有一些按钮,我已经为它们分配了一些shourtcuts.快捷方式工作正常,但按钮的文本属性中的下划线在用户点击ALT键之前不会显示.如何更改此默认行为?

那么这是我的下划线

Button1.Text = "&EDIT";
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# keyboard-shortcuts button winforms

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

如何在控件具有焦点时使用键盘关闭WinForm

我如何关闭我的C#WinForms程序,同时有一些控件,如树视图,按钮和其他东西都存在于它们,他们有焦点,可能是他们有相同的键盘快捷键?

例如,在我的树视图中,如果按ALT + ESC键,节点将被删除.但我希望能够通过按ESC键调用'this.Close()'方法,无论是否有任何控件都有焦点.

谢谢.

c# keyboard-shortcuts winforms

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

Masked TextBox如何在文本框中不显示下划线并允许用户输入3位数

我戴着蒙面文本框遇到了一些麻烦.

如何隐藏默认情况下显示在文本框中的下划线?!

此外,我希望用户能够输入最多3位数(他/她可以输入至少1位和最多3位数).怎么设置?

c# maskedtextbox winforms

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

用等效字符串表示Char

我有以下类作为DataSourceListBox:

class SeparatorChars
{
    /// <summary>
    /// Text to describe character
    /// </summary>
    public string Text { get; set; }

    /// <summary>
    /// Char value of the character
    /// </summary>
    public char Value { get; set; }

    /// <summary>
    /// Represent object as string
    /// </summary>
    /// <returns>String representing object</returns>
    public override string ToString()
    {
        return Text + " '" + Value + "'";
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,默认情况下这将使用Valuejust作为添加到字符串的常规字符,例如,如果我Tab像这样定义此类:

var TabSeparator = new SeparatorChars {Text = …
Run Code Online (Sandbox Code Playgroud)

c# string formatting char

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

一个DataSource用于多个控件

ListBox在winforms应用程序中有两个,我为它们分配了一个数据源,如下所示:

private void MakeMeasurementUnits()
{
    var units = new List<MeasurementUnit>
                    {
                        new MeasurementUnit {Name = "Current", SiUnit = "A"},
                        new MeasurementUnit {Name = "Voltage", SiUnit = "V"},
                        new MeasurementUnit {Name = "Time", SiUnit = "s"},
                        new MeasurementUnit {Name = "Temprature", SiUnit = "°C"}
                    };

    lbxXunit.DataSource = units;
    lbxYunit.DataSource = units;
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是(或者可能是因为这是我的第一次!!),在我点击其中一个lisboxes的项目的形式,第二个列表框中的相同项目也被选中.这是默认行为吗?怎么预防这个?如果这是默认行为,那么有用的是什么?

我找到了快速补救措施来制作两个不同的数据源(与另一个名称相同)

c# datasource winforms

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

计算两条曲线之间的面积

我正在研究一个比较两条曲线的程序(由二极管输出产生的电压/电流曲线).

我想计算这两条曲线之间的面积(蓝色曲线是第一个二极管,RED是第二个曲线).

在此输入图像描述

每条曲线有51个数据点(它们总是具有相同数量的数据).我现在正在做的是这样的:

public double CalculateArea(double[,] pin1, double[,] pin2)
{
    double voltageArea = 0;
    double currentArea = 0; //Current (Vertical axis) not yet!
    double max = 0;
    double min = 0;

    for (int i = 0; i < pin1.GetLength(0); i++)
    {
        max = Math.Max(Math.Abs(pin1[i, 0]), Math.Abs(pin2[i, 0]));
        min = Math.Min(Math.Abs(pin1[i, 0]), Math.Abs(pin2[i, 0]));

        voltageArea += max - min;
    }

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

这段代码以某种方式工作,记住我对Current(垂直轴)什么都不做.如果结果接近0,例如0.05,那么曲线之间的差异是可以得到的.但我确信这不是正确的方法,我完全不知道我写的方法的结果是什么......似乎只是电压点之间的区别.

如果你能帮助我改进这种方法,我真的很高兴.

c# math graph

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

将List <T>转换为Array(多维)

可能重复:
如何将列表<>转换为多维数组?

我想double[,]为此目的有一个数组形式,因为我不知道这个数组的长度是多少,我想先做List一个然后再使用List<T>.ToArray()它转换为double[,]:

public double[,] FilterClampedData(double[,] data)
{
    var finalData = new List<double[]>();

    //Do some stuff on parameter

    return finalData.ToArray(); ///Does not compile :(
}
Run Code Online (Sandbox Code Playgroud)

.net c# list multidimensional-array

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

检查xml节点是否包含子子节点

有没有办法检查我正在寻找的节点,使用XPATH是否包含子节点?

我有一个xml文件,一个特定的节点有时会有孩子,有时候它没有!如何检查这个,所以我不会得到太多NullReferenceExceptions!?

检查以下示例:

var text = xml.SelectSingleNode("/Document/Tests/Test").InnerText;
Run Code Online (Sandbox Code Playgroud)

如果我正在使用的当前xml文件确实TestTests其工作正常的节点,但在另一个xml文件中该Tests节点不包含任何东西,它只是在那里没有明显的原因!?

XPATH中是否有命令执行此操作?就像是!!:

"/Document/Tests[NodeExist(Test)]

c# xml xpath

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

在调用`Invoke`时避免`ObjectDisposedException`

我有两种形式,一种是MainForm第二种形式DebugForm.MainForm有一个按钮,用于设置和显示DebugForm,并将引用传递给已打开的SerialPort:

private DebugForm DebugForm; //Field
private void menuToolsDebugger_Click(object sender, EventArgs e)
{
    if (DebugForm != null)
    {
        DebugForm.BringToFront();
        return;
    }

    DebugForm = new DebugForm(Connection);

    DebugForm.Closed += delegate
    {
        WindowState = FormWindowState.Normal;
        DebugForm = null;
    };

    DebugForm.Show();
}
Run Code Online (Sandbox Code Playgroud)

在DebugForm中,我附加了一个方法来处理DataReceivedserialport连接的事件(在DebugForm的构造函数中):

public DebugForm(SerialPort connection)
{
    InitializeComponent();
    Connection = connection;
    Connection.DataReceived += Connection_DataReceived;
}
Run Code Online (Sandbox Code Playgroud)

然后在该Connection_DataReceived方法中,我更新DebugForm中的TextBox,即使用Invoke进行更新:

private void Connection_DataReceived(object sender, SerialDataReceivedEventArgs e)
{           
    _buffer = Connection.ReadExisting();
    Invoke(new EventHandler(AddReceivedPacketToTextBox));
}
Run Code Online (Sandbox Code Playgroud)

但我有一个问题.当我关闭DebugForm,它抛出一个ObjectDisposedExceptionInvoke(new EventHandler(AddReceivedPacketToTextBox));线.

我怎样才能解决这个问题?欢迎任何提示/帮助!

UPDATE …

.net c# multithreading invoke winforms

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

在c#中使用带有文件和密钥的X509Certificate

我已将证书和密码提供给接受ssl连接的服务器.我试图建立与此服务器的连接,但身份验证失败,主要是因为我不知道如何使用我给出的文件和密码.

这是我的代码:

    X509Certificate certificate = new X509Certificate(
        @"c:\mySrvKeystore", KEY_PASSWORD);

    public static bool ValidateCertificate(
        object sender,
        X509Certificate certificate,
        X509Chain chain,
        SslPolicyErrors errors)
    {
        if (errors == SslPolicyErrors.None)
            return true;

        Console.WriteLine("Certificate error: {0}", errors);
        return false;
    }

    public void RunClient(string address, int port)
    {
        Console.WriteLine("Starting client...");
        var client = new TcpClient(address, port);


        Console.WriteLine("Client connected.");


        var stream = new SslStream(client.GetStream(),false,
            ValidateCertificate, null);

        try
        {
            stream.AuthenticateAsClient(address);

            Console.WriteLine(stream.IsAuthenticated ? "Client authenticated." : "Client is not authenticated.");

            //TODO constantly read from server!
        }
        catch (AuthenticationException ae) …
Run Code Online (Sandbox Code Playgroud)

c# java ssl-certificate x509certificate

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