小编Gra*_*ICA的帖子

GetChildAtPoint方法返回错误的控件

我的表单层次结构是这样的:

Form -> TableLayoutOne -> TableLayoutTwo -> Panel -> ListBox
Run Code Online (Sandbox Code Playgroud)

在ListBox的MouseMove事件中,我有这样的代码:

    Point cursosPosition2 = PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));
    Control crp = this.GetChildAtPoint(cursosPosition2);
    if (crp != null)
        MessageBox.Show(crp.Name);
Run Code Online (Sandbox Code Playgroud)

MessageBox向我显示"TableLayoutOne",但我希望它向我显示"ListBox".我的代码在哪里,我错了?谢谢.

c# cursor-position winforms

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

无法从字符串中收集子字符串

我从一个来自word文件的字符串中提取子字符串.但index out of range即使子串的起始和结束索引小于字符串的长度,我也会收到错误.

for(int i=0;i<y.Length-1;i++)
{
    if (Regex.IsMatch(y[i], @"^[A]"))
    {       
        NumberOfWords= y[i].Split(' ').Length;

        if (NumberOfWords > 5)
        {
            int le = y[i].Length;
            int indA = y[i].IndexOf("A");
            int indB = y[i].IndexOf("B");
            int indC = y[i].IndexOf("C");
            int indD = y[i].IndexOf("D");

            //if (indD > 1 && indC > 1)
            //    breakop2 = breakop2 + '\n' + '\n' + y[i].Substring(indC, indD);

            if (indC > 1 && indB > 1)
                breakop1 = breakop1 + '\n' + y[i].Substring(indB, indC);

            if (indB > 1) …
Run Code Online (Sandbox Code Playgroud)

c# string substring

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

将日期和时间字符串连接到DateTime

给定两个具有以下值的字符串:

31/05/2013 0:00:00
21:22
Run Code Online (Sandbox Code Playgroud)

将它们加入DateTime数据类型以获得最有效的方法是什么:

31/05/2013 21:22
Run Code Online (Sandbox Code Playgroud)

忽略第一个字符串"0:00:00"的时间部分,有利于使用来自第二个字符串的"时间".

c# datetime

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

Decorator和Adapter模式之间有什么区别?

在什么条件下使用Adapter或Decorator模式会更好?

欢迎来自真实节目的例子.

c# design-patterns

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

根据其内容的宽度调整标签宽度

我正在使用代码编辑器,并希望随着数字的增加自动调整标签的宽度。例如,对于 1-9(1 位数字),有一个特定的宽度。然后当它达到 10-99(2 位数)时,标签的宽度增加。然后又是 100-999(3 位数)等。

结果应该是这样的:

在此处输入图片说明

这是我的代码:

private void timer_countline_Tick(object sender, EventArgs e)
{
    updateNumberLabel();
}

private void updateNumberLabel()
{
    // we get index of first visible char and number of first visible line
    Point pos = new Point(0, 0);
    int firstIndex = rtb.GetCharIndexFromPosition(pos);
    int firstLine = rtb.GetLineFromCharIndex(firstIndex);

    // now we get index of last visible char and number of last visible line
    pos.X = ClientRectangle.Width;
    pos.Y = ClientRectangle.Height;
    int lastIndex = rtb.GetCharIndexFromPosition(pos);
    int lastLine = rtb.GetLineFromCharIndex(lastIndex);

    // …
Run Code Online (Sandbox Code Playgroud)

c# label width winforms

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

自定义验证器不适用于文本框

我正在学习如何使用自定义验证器进行服务器端验证,但我似乎无法让它工作。每当我单击按钮时,文本框为空,错误消息就不会显示。我究竟做错了什么?

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:CustomValidator ID="CustomValidator1" ControlToValidate="TextBox1"
     OnServerValidate="CustomValidator1_ServerValidate" ValidationGroup="ValidateGp"
     ErrorMessage="This is a custom error validator" runat="server"/>

<asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="ValidateGp"/>

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    if (args.Value.Equals(string.Empty))
    {
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net customvalidator server-side-validation

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

调整DataGridView宽度以适合列

我有一个DataGridView以编程方式填充的.列设置为根据单元格内容自动调整大小.

DataGridView会提供关于液压和气动原理图部分的信息来填充.我的表单只有a SplitContainer,a PictureBox和the DataGridView.将SplitterDistance被链接到的宽度DataGridView.

DataGridView将仅具有最多6个列("索引","型号","序列号","图号","页号","修订号") ,并根据原理图要求至少2列的.所以我想相应地调整控件的大小.

如何让DataGridView控件调整为列的总宽度,以便滚动条不显示?

c# datagridview winforms

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

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

在String.Join中添加新行?

所以我一直在疯狂地为我的String.Join打印输出添加新行,但似乎不可能或我做错了什么?我已经尝试过使用"/n/r",Enivrorment.NewLine以及创建一个类也创建一个新的行

列表框我也试图打印出来

ListBox1.Items.Add("Calories to lose 0.5kg per week: " +
    string.Join(Environment.NewLine + "Calories to lose 1kg per week:",
        bc.LoseOrGainWeightCalories(bc.MaintainWightCalories(), true)));
Run Code Online (Sandbox Code Playgroud)

拜访这堂课:

public string[] LoseOrGainWeightCalories(double weight, bool lose) {
    string[] array = new string[2];
    double LoseGainWeight = this.weight;
    if(lose==true) {
        array[0] = Convert.ToString(LoseGainWeight - 500);
        array[1] = Convert.ToString(LoseGainWeight - 1000);
    } else {
        array[0] = Convert.ToString(LoseGainWeight + 500);
        array[1] = Convert.ToString(LoseGainWeight + 1000);
    }
    return array;
}
Run Code Online (Sandbox Code Playgroud)

电流输出图片:

c# string

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

如何在主屏幕上执行MessageBox.Show?

是否有可能MessageBox在主屏幕上显示,而不一定在运行应用程序的屏幕上?

c# messagebox winforms

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