小编Eug*_*yos的帖子

自动生成的代码中未自定义自定义用户控件

这种情况以前发生了很多次,但我从来没有费心去弄清楚原因,现在我已经厌倦了:

例如,我从RichTextBox或Panel派生一个类,我重建我的项目以将类添加到VS设计器工具箱,然后将自定义用户控件拖放到Form.一切正常,我可以运行我的项目......

当我通过设计器编辑窗体或自定义用户控件的属性时出现问题.有时,设计器会从其代码隐藏中删除初始化行,从而导致设计器和可执行文件中出现异常,因为控件仍然未初始化.

换句话说,从Form1.Designer.cs中删除以下行:

this.customRichTextBox1=new CustomRichTextBox();
Run Code Online (Sandbox Code Playgroud)

没有其他行从代码隐藏中删除,因此自定义控件的属性仍然设置,尽管变量保持未初始化.

我的解决方案一直是在设计器代码隐藏中手动初始化我的用户控件,但设计人员最终会再次删除它.

我相信当我通过设计器构建自定义用户控件时,这不会发生(但我不完全确定).它只发生在我手动定义类似下面的内容时:

class CustomRichTextBox:RichTextBox{}
Run Code Online (Sandbox Code Playgroud)

这太烦人了.我究竟做错了什么?


正如@Cody所要求的,以下是重现问题的步骤.我正在使用VS2010,但我认为自2005年以来我遇到了这个问题.

步骤1.创建新的Windows窗体应用程序,任何框架

步骤2.在主Form类下面添加以下类:(这恰好是这次导致我出现此问题的控件.)

class CustomRichTextBox : RichTextBox
{
    Timer tt = new Timer();

    internal CustomRichTextBox()
    {
        tt.Tick += new EventHandler(tt_Tick);
        tt.Interval = 200;
    }


    protected override void OnTextChanged(EventArgs e)
    {
        tt.Stop();
        tt.Start();
    }

    void tt_Tick(object sender, EventArgs e)
    {
        System.Diagnostics.Trace.WriteLine("Hello world!");
    }
}
Run Code Online (Sandbox Code Playgroud)

步骤3.按F6重建.

步骤4.通过从工具箱中拖放,将CustomRichTextBox控件添加到窗体.

步骤5.如果您愿意,可以按F5测试应用程序,但它应该可以工作.关闭正在运行的应用

步骤6.按F6重建,此时,设计人员应该崩溃并显示以下消息:"变量'customRichTextBox1'未声明或从未分配过." (在一种情况下,整个VS完全崩溃,但错误通常包含在设计器中.)

步骤7.要解决问题,请进入代码隐藏并初始化变量,但下次重建时,初始化行将消失.

c# user-controls designer custom-controls visual-studio

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

不合理的WPF DataGrid加载时间

我一直用WPF DataGrids加载时间很长,我在网上找不到任何类似的报道,所以我怀疑我做错了什么.现在我很确定,因为添加布局复杂性会大大降低执行速度.在一个非常简单的布局中,DataGrid立即填充,而下面的代码大约需要3秒才能执行.

在以下代码中,加载150行和11列需要约3秒,即使每个单元格未绑定到任何属性且AutoGenerateColumns = False也是如此.(我有一个两核,2.6GHz处理器,有足够的RAM).

如果在布局中设置ItemsSource属性,则会发生瓶颈,如下所示:

<Window x:Class="datagridtest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Border  Background="LightSteelBlue" CornerRadius="10" Margin="10">
    <ScrollViewer Margin="10" HorizontalScrollBarVisibility="Auto">
        <Grid Margin="10,50,0,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"  />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />

            </Grid.RowDefinitions>
            <Expander IsExpanded="True" Name="expander1"  Grid.Row="0">
                <Grid>
                    <DataGrid VirtualizingStackPanel.IsVirtualizing="True" AutoGenerateColumns="false" Name="dg" Height="auto" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="False">
                        <DataGrid.Columns>
                            <DataGridTextColumn >
                                <DataGridTextColumn.Header >
                                    <TextBlock Width="140" HorizontalAlignment="Center" TextAlignment="Center">untitled<LineBreak/>column</TextBlock>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>



                            <DataGridTextColumn >
                                <DataGridTextColumn.Header >
                                    <TextBlock Width="140" HorizontalAlignment="Center" TextAlignment="Center">untitled<LineBreak/>column</TextBlock>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>

                            <DataGridTextColumn >
                                <DataGridTextColumn.Header >
                                    <TextBlock Width="140" HorizontalAlignment="Center" TextAlignment="Center">untitled<LineBreak/>column</TextBlock>
                                </DataGridTextColumn.Header>
                            </DataGridTextColumn>

                            <DataGridTextColumn > …
Run Code Online (Sandbox Code Playgroud)

wpf performance datagrid itemssource

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

仅执行一次Makefile规则

我有一个Makefile规则,如下所示:

%.b : %.a
    [run some commands...]
Run Code Online (Sandbox Code Playgroud)

我想重写我的Makefile,以便从%.a到%.b的所有转换都是通过单次执行命令来处理的,而不是每个文件执行一次.

我尝试过以下方法:

%.b : someDummyFile

someDummyFile : 
    [run some commands]
Run Code Online (Sandbox Code Playgroud)

问题是即使第一个规则没有请求创建someDummyFile的规则也会被执行,从而导致不良行为.我猜测没有依赖关系的规则会一直执行,即使他们的目标没有被其他规则使用?

我在这里错过了什么?


在尝试调试此问题时,我删除了对第二条规则的所有引用.例如,我将以下规则插入到现有的Makefile中,为什么即使没有其他规则引用它也会执行它?

HELLOWORLD :
    echo "# HELLO WORLD! THE NEXT LINE WILL TRIGGER AN ERROR"
    DFASDA
Run Code Online (Sandbox Code Playgroud)

linux makefile

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

如何同时为C#类分配多个名称

有没有一种方法可以为C#类赋予多个名称,例如:

Foo {}

class AlternativeFooName指的是Foo

我希望能够通过两个名称,Foo和AlternativeFooName访问Foo,但不必从Foo继承.

对此应用程序将为类提供一个长描述性名称,但在使用时可以缩写它,例如:

而不是Foo f = new Foo(); 能够使用具有相同效果的以下内容:F f = new F();

c# syntax inheritance class

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

Java中的NumericUpDown等价物

这应该很容易,但我没有在谷歌找到它:

Java中的.Net的System.Windows.Forms.NumericUpDown是否有等效控件?

所需的功能是选择有效的十进制或整数.

java swing awt

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

获取存储为对象的数组的第一个元素的地址

我需要获取任意类型数组的第一个元素的内存地址,该数组存储为Object类型。例如,数组可以是 double[] 或 int[],但在代码中它会被输入为 Object。

虽然获取已知类型数组的地址很简单,但在 C# 中不允许获取对象的地址。是否有一种类型(Object 除外)可以用来存储这样的数组,并且可以更轻松地获取其内存地址?或者有没有办法使用互操作/反射直接访问地址而无需中间数据副本?

请注意,在下面的第二行中,double[] 被存储为一个对象。请注意,在 fixed() 行中,我正在尝试获取 o 的地址,这在 C# 中是不允许的。

提前致谢!

int len=100;
object o = new double [len];

   unsafe
   {
                fixed(int*ptr=&o)
                for (int index = 0; index < len; index++)
                {
                  // access data directly to copy it, etc...
                }

    }
Run Code Online (Sandbox Code Playgroud)

.net c# reflection unsafe managed

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

Eclipse如何知道Swing Designer是否可用于JFrame派生类?

我在Eclipse中使用Google Web Toolkit的Swing Designer来创建和编辑自定义JFrame等组件.

问题是我的课程有时会破坏设计视图(可能是因为项目也是由不同平台上的其他人编辑),我想知道如何恢复它.换句话说,我能够编辑自定义JFrame的代码,但我不能使用可视化编辑器来修改JFrame.我注意到,当设计视图被破坏时,我的JFrame源代码的图标也会变为普通的java-source-code图标.

Eclipse在哪个文件中跟踪可以使用可视化编辑器编辑哪些JFrame,哪些不是?

提前致谢.

java eclipse user-interface gwt swing

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