小编bsh*_*52s的帖子

如何在不更改格式/间距的情况下在 C# 中编辑 XML?

我需要一个通过 xml 文件、更改一些属性值并添加其他属性的应用程序。我知道我可以用 XmlDocument 和 XmlWriter 做到这一点。但是,我不想更改文档的间距。有没有办法做到这一点?或者,我必须自己解析文件吗?

c# xml

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

如何在将项目添加到C#中的集合之前触发事件?

我想在将项添加到BindingList之前进行一些处理.我看到有一个ListChanged事件,但在添加项目后会触发此事件.只有在调用AddNew方法(而不是Add方法)时才会触发AddingNew事件.以前有人做过这样的事吗?

更新:

我创建了以下类,当在IList上调用Add方法时,我的新Add方法被触发.那么,我是否有其他地方读过的铸造问题?如果我从集合中删除了ISpecialCollection接口,则不会调用我的Add方法.有人可以解释为什么它的行为不同吗?如果我使用ISpecialCollection <接口,是否会出现转换问题?

public interface ISpecialCollection<T> : IList<T>
{
}

public class SpecialCollection<T> : BindingList<T>, ISpecialCollection<T>
{
  public new void Add (T item)  
  {
    base.Add(item);    
  }
}

class Program
{
  static void Main(string[] args)
  {
    IList<ItemType> list = new SpecialCollection<ItemType>();
    list.Add(new ItemType());
  }
}
Run Code Online (Sandbox Code Playgroud)

c# collections events bindinglist

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

如果存在命令行选项,如何在MFC应用程序中绕过GUI?

我有一个现有的简单MFC应用程序,用户指定输入文件,输出文件,然后是"处理"按钮.我想添加功能,以便输入/输出文件是命令行参数.但是,如果它们存在,我不希望GUI出现.我只想要执行"进程".我看到我可以在哪里获得命令行参数(m_lpCmdLine)但是如何绕过GUI的显示?如果我进入应用程序,它会直接进入winmain.cpp并显示GUI而不会进入我的任何代码.

command-line mfc arguments

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

如何在C++ .net中将gcroot <Object ^>转换为IMyInterface?

我不得不用gcroot做一些奇怪的事情,但我在动态转换线上得到以下错误:"不能使用'dynamic_cast'从'gcroot'转换为'IMyInterface ^'.在C#中,你可以很容易地投出一个任何接口的泛型对象.如果对象没有实现接口但是它会编译,你可能会遇到运行时错误.

gcroot<Object^> m_pDataObject;
IMyInterface obj = dynamic_cast<IMyInterface^>(m_pDataObject);
Run Code Online (Sandbox Code Playgroud)

.net casting c++-cli visual-c++

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

visual studio designer可以显示继承泛型类型的类吗?

我正在尝试清除解决方案中的所有设计器错误,并遇到以下错误:

无法为此文件显示设计器,因为其中的所有类都无法设计.设计者检查了文件中的以下类:DoubleAttributeTextBoxBase ---无法加载基类'NumericAttributeTextBoxBase'.确保已引用程序集并且已构建所有项目.

这些类都在同一个程序集中定义,所以我知道它不是引用问题.我想知道它是否与基类是通用的事实有关.有任何想法吗?

public class DoubleAttributeTextBoxBase : NumericAttributeTextBoxBase<double>

public class NumericAttributeTextBoxBase<T> : TextBox where T : IComparable, IComparable<T>
Run Code Online (Sandbox Code Playgroud)

c# visual-studio-designer

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

如何加粗绑定TextBlock的部分?

我有一个绑定到属性的TextBlock.但是,我想在文中强调某些词语.最简单的方法是什么?仅供参考,我是WPF的新手.

c# wpf textblock bold

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

在MFC中,如何判断是否启用了CComboBox?

我看到你可以使用EnableWindow方法启用/禁用,但是如何获取它的当前状态?

mfc ccombobox

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

XAML中没有智能感知

我不再在我的XAML中获得智能感知.不久前,我在VS 2008中更改了一些设置.我相信其中一个与自动加载工具箱有关.其次,我将默认的XAML编辑器更改为XML编辑器而不是设计器.Visual Studio只是表现得太慢了,这似乎解决了我的问题.现在,我需要再做一些设计师的工作而且我没有得到intellisense.如果我转到工具 - >选项 - >文本编辑器 - > XAML,则自动列表成员将显示为灰色.按Ctrl空间为我提供了它,但我不想一直这样做.另外,我注意到我甚至无法将网格从工具箱拖到XAML上.顺便说一句,我确实安装了resharper.这会过度强大一些VS选项吗?有任何想法吗.

c# intellisense visual-studio-2008

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

如何在 DataGridView 中模仿 Windows 资源管理器的多选/拖放行为?

我正在尝试模仿 Windows 资源管理器处理多项选择的方式。在默认的 DataGridView 中,您可以使用 Ctrl 键单击来选择多个项目。但是,如果您释放 Ctrl 键,然后尝试拖放所选项目,则会清除所选项目并仅选择“命中”行。我在网上某处找到了以下解决方案。

protected override OnMouseDown(MouseEventArgs e)
{
  int hitRowIndex = HitTest(e.X, e.Y).RowIndex;
  if(!SelectedRows.Contains(Rows[hitRowIndex]))
  {
    base.OnMouseDown();
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,这会导致其他副作用。按住 CTRL 键并将鼠标放在所选项目上,该项目将保持选中状态。这是有道理的,因为如果选择了单击的行,则将绕过 mousedown 事件。从 Windows 资源管理器的行为来看,按住 CTRL 键取消选择项目似乎直到 MouseUp 事件才得到处理。有人尝试这样做吗?

c# datagridview multi-select

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

WPF 样式设置器不起作用

我有一个包含组合框的自定义用户控件。我添加了一个 ComboBoxWidth 依赖属性,以允许开发人员根据需要设置宽度。使用样式设置器,我想在另一个用户控件上将所有这些组合框的宽度设置为相同的值,以保持大小的一致性。但是,它不起作用。如果我在每个控件上分别设置大小,它就会起作用。在样式设置器中指定大小时,它会被忽略。如果我将属性字符串从“ComboBoxWidth”更改为“Width”,则所有控件的整个宽度都会更改。所以,看起来样式格式是正确的。我错过了什么吗?这是我第一次尝试将样式应用于我自己的自定义依赖项属性。

注意:AngleUserControl 基于通用用户控件(不包括任何在代码中创建的 xaml--control)。ComboBoxWidth 探测器位于通用基类中。我不确定这是否与它有关。

样式代码(在包含多个 AngleUserControl 控件的用户控件中):

<UserControl.Resources>
    <Style TargetType="wpfControls:AngleUserControl">
        <Setter Property="ComboBoxWidth" Value="400"/>
    </Style>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

单元控制库:

/// <summary>
/// Control that displays value in different units depending on selected unit type.
/// </summary>
/// <typeparam name="TSelectionTypeEnum">The enumeration type for all the available units.</typeparam>
/// <typeparam name="TConverterType">The MultiValueConverter that converts the value between the different types of units.</typeparam>
/// <typeparam name="TValueType">The underlying type of the stored value.</typeparam>
public class UnitControlBase<TSelectionTypeEnum, TConverterType, TValueType> : UserControl
    where TSelectionTypeEnum : struct, …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding styles

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