我们在项目中使用第三方控件.几乎每当我双击具有设计视图的文件时,Visual Studio都会尝试用英雄的努力来提升设计师,并且在一些无响应之后,它会将license.licx文件提供(生成)到我们的解决方案中.这会不必要地干扰源代码控制:文件添加也会修改csproj,并且原始代码文件和designer.cs也会被检出(尽管它们没有任何修改).
如果有人知道如何禁用添加该licx,请告诉我.仅供参考:相关的第三方库是DevExpress WinForms和IdeaBlade DevForce Classic(它与DevExpress有一些集成).我使用VS 2012.我们的产品是最终用户产品,而不是第三方库.
澄清:我们正在谈论一个开发环境.请参阅基于Licenses.licx的.Net组件许可模型如何工作? - 不建议将其保留在源代码管理中.我不想就此辩论.让我们关注如何防止Visual Studio一直尝试创建它.
我将一组对象绑定到DevExpress GridControl,并使用15.1数据注释来自定义外观.但是,我很难找到有关设置属性列大小的任何信息.这可以通过注释吗?
带注释的类:
public class DataFeedback
{
[Display(Name = "Row Num", Order = 0)]
public int RowNum { get; set; }
[Display(Name = "Description", Order = 1)]
public string Desc { get; set; }
public DataFeedback(int rowNum, string desc)
{
RowNum = rowId;
Desc = desc;
}
}
Run Code Online (Sandbox Code Playgroud)
简单的绑定
var feedbackList = new List<DataFeedback>()
feedbackList.Add(new DataFeedback(1, "test"))
gridControl1.DataSource = feedbackList;
// only layout I've found so far
gridView1.BestFitColumns();
Run Code Online (Sandbox Code Playgroud) 我们有一个绑定到List<T>项目的网格.只要用户点击"刷新",就会从数据库中获取更改,并更新绑定列表.我遇到了一个问题,即重复项目被添加到网格中,我无法弄清楚原因.
数据库调用返回两个值:List<int>已更改的记录ID,以及已更改记录List<MyClass>的更新数据.我正在调试的现有代码代码找出需要更新的内容,如下所示:
public void FindUpdates(IList<MyClass> existingRecords,
IList<MyClass> updatedRecords,
List<int> updatedIds,
out IDictionary<int, int> existing,
out IDictionary<int, int> updated,
out List<int> updates,
out List<int> removes,
out List<int> adds)
{
updates = new List<int>();
removes = new List<int>();
adds = new List<int>();
existing = FindUpdated(existingRecords, updatedIds);
updated = FindUpdated(updatedRecords, updatedIds);
if (updatedIds != null)
{
// split add/update and remove
foreach (int id in updatedIds)
{
if (!existing.ContainsKey(id))
adds.Add(id);
else if (updated.ContainsKey(id))
updates.Add(id);
else
removes.Add(id);
} …Run Code Online (Sandbox Code Playgroud) 我下载了DevExpress Universal 12.2 Exe文件,并将2个文件夹安装到我的电脑上.他们是devexpress dxperience 12.2和dxteeme 12.2文件夹.当我打开visual studio express 2012时,我看不到devexpress控件?我试图通过单击SETUP修复我的devexpress安装.
如何在Visual Studio.net 2012中放置devexpress工具箱?
谢谢
我在gridview中添加了一个新的ButtonEdit列,我将按钮转到了ImageButton.我添加了button_click事件,但事件未触发.我应该绑定 - 未绑定的东西到我的列按钮?
以下是属性:
//
// gvPrompt
//
this.gvPrompt.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
this.gcID,
this.gcName,
this.gcPromptFileName,
this.gcTypeName,
this.gcDomainName,
this.gcPromptText,
this.gcLanguage,
this.gcPromptPlayType,
this.gcDuration,
this.colPlayPrompt});
**this.gvPrompt.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;**
this.gvPrompt.GridControl = this.gcPrompt;
this.gvPrompt.Name = "gvPrompt";
this.gvPrompt.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.False;
this.gvPrompt.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.False;
this.gvPrompt.OptionsBehavior.Editable = false;
**this.gvPrompt.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click;**
this.gvPrompt.OptionsCustomization.AllowGroup = false;
this.gvPrompt.OptionsSelection.EnableAppearanceFocusedCell = false;
this.gvPrompt.OptionsView.ShowGroupPanel = false;
this.gvPrompt.RowHeight = 3;
**this.gvPrompt.ShowButtonMode = DevExpress.XtraGrid.Views.Base.ShowButtonModeEnum.ShowForFocusedRow;
this.gvPrompt.FocusedRowChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventHandler(this.gvStep_FocusedRowChanged);**
//
// colPlayPrompt
//
this.colPlayPrompt.Caption = "C?al";
this.colPlayPrompt.ColumnEdit = this.repositoryItemButtonEdit1;
this.colPlayPrompt.FieldName = "Column";
this.colPlayPrompt.ImageAlignment = System.Drawing.StringAlignment.Center;
this.colPlayPrompt.Name = "colPlayPrompt"; …Run Code Online (Sandbox Code Playgroud) 我经常使用 Visual Studio 2008、.NET C# 2.0-3.5 和 Windows 窗体,并且和我之前的许多人一样,我注意到 GDI+ 在绘制控件时非常慢。请注意,我不太处理图像(JPG、GIF 等)。图像仅作为某些地方的图标。这实际上是绘制缓慢的控件/表单/等。
问题是您可以看到正在绘制控件,并且可能需要几秒钟才能绘制一组看似简单的控件。即,它的滞后和可怕。
我已经做了一些测试,我只是在表单上放置了一些标签(40-50),按 F5 运行并且必须等待它们被绘制。再次,滞后而不是一个很好的体验。
所以,WPF 可能会解决这个问题,但我/我们还没有准备好转向 WPF。所以我在四处寻找解决方法或修复程序,我偶然发现了 Direct2D,在阅读其他一些库时。
让我有点困惑,因此这些问题:
1) 首先,我想要的是一种相当简洁和简单的方法,可以用更快的硬件加速方法替换GDI+。是否可以在不转到 WPF 并且不必重写我所有的 Windows 窗体代码的情况下做到这一点?
每当我在 Direct2D 上阅读任何内容时,我都会看到很长的通常可怕的 C++ 代码块,告诉我如何手动编写用于绘图的代码。我不要那个。
2) 在网上阅读时,我偶然发现了 SlimDX,但我不知道如何使用它(我承认,我在写作时还没有尝试过很多)。假设我已经有了一个 GUI 应用程序(Windows 窗体,标准 C# 代码)——我能不能以某种方式使用 SlimDX(或类似的东西)来“替换”GDI+ 而不需要太多重写?
我的问题是我找不到任何示例或类似的例子来告诉我是否可以在我已经创建的 Windows 窗体软件中使用 SlimDX、Direct2D 或其他类似的东西,如果可能的话 - 怎么做。
希望我不要太模糊 =)
==编辑== 2010-09-22
我已经在我的真实应用程序中进行了一些测试,并将缓慢的事情之一与此隔离开来:
当我向 UserControl 中的某些标签添加文本时,控件会调整自身大小以适应文本。例如,包含的 GroupControl 会根据刚刚添加到标签的 .Text-property 的文本大小进行一些调整。
大约有 10 个标签控件。第一次更新标签,从而改变大小,整个过程大约需要 500 毫秒。第二次更新标签,大小没有变化,大约需要 0 毫秒。
==编辑 2== 2010-09-22 …
我在Windows应用程序中看到了轻微的内存泄漏.我在我的应用程序中使用DevExpress XtraForm.我看到的是表单的一个实例总是保存在内存中.如果多次打开同一个表单,它仍会保持打开最后一个表单的引用.
防爆.如果你在应用程序中打开10个不同的表单并关闭所有表单,它仍然不会释放分配给它的内存,因为一些奇怪的"MdiClient对象引用了LayoutEventArgs对象".幸运的是,它保留了每种类型单项的参考.
这是Redgate内存分析器输出的链接.
https://dl.dropboxusercontent.com/u/2781659/Memory%20Leak.pdf
在上面的图表中,DepartmentsForm是dipined但由于LayoutEventArgs的affectedComponent成员引用它而无法进行GC.
如果您发现任何明显错误,请告知.
我有一个Devexpress winforms GridView,我想转换为TileView.这是我GridView在运行时的当前信息:
使用List数据源填充此GridView,它可以正常工作.我使用Designer 将其转换GridView为a TileView:
成功转换GridView后,我尝试运行App,它显示正确的记录数,但它是空白的:
我错过了什么吗?这是填充网格的代码:
using (var sovDB = new MyEntities())
{
gridControl1.BeginUpdate();
tileView1.Columns.Clear();
gridControl1.DataSource = null;
var query = (from b in sovDB.Palletes
join ipc in sovDB.IPCDisplays on b.DisplayNo equals ipc.DisplayNo
orderby b.PalleteID
select new
{
PalletNo = b.PalleteNumber,
Packs = b.CurrentPackCount,
Mass = b.CurrentPackWeight + " Kg"
}).ToList();
gridControl1.DataSource = query;
gridControl1.EndUpdate();
}
Run Code Online (Sandbox Code Playgroud) 我使用此代码生成数据并将其输出到gridview中
string sql = "Sql Query";
string sqlCredit= "Sql Query";
string sqlCreditPayment = "Sql Query";
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
ds.EnforceConstraints = false;
ds.DataSetName = "Receivables";
ds.Tables.Add((con.ShowResult(sql, ref da)).Tables[0].Copy());
ds.Tables[0].TableName = "dtReceivables";
ds.Tables.Add((con.ShowResult(sqlCredit, ref da)).Tables[0].Copy());
ds.Tables[1].TableName = "dtCredit";
ds.Tables[1].Columns[1].ColumnMapping = MappingType.Hidden;
ds.Tables[1].Columns[7].ColumnMapping = MappingType.Hidden;
ds.Tables.Add((con.ShowResult(sqlCreditPayment, ref da)).Tables[0].Copy());
ds.Tables[2].TableName = "dtCreditPayment";
ds.Tables[2].Columns[0].ColumnMapping = MappingType.Hidden;
DataRelation dr0 = new DataRelation("CreditList", ds.Tables[0].Columns["Id"], ds.Tables[1].Columns["DocSupplierId"]);
ds.Relations.Add(dr0);
DataRelation dr1 = new DataRelation("CreditPaymentList", ds.Tables[1].Columns["Id"], ds.Tables[2].Columns["SourceId"]);
ds.Relations.Add(dr1);
slipDashBoard.DataSource = ds.Tables["dtReceivables"];
slipDashBoard.ForceInitialize();
gridView1.BestFitColumns();
Run Code Online (Sandbox Code Playgroud)
伙计们.请帮忙.当我点击gridview的孩子时,我希望实现这样的目标.thnx提前

目前我正在使用devexpress开发一个应用程序,我设置了两个列来隐藏,如下所示:
gridView1.Columns[2].Visible = false;
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的程序时,DataGrid中有一个名为"Selector de Columnas"的选项(英文ColumnChooser).在此选项中,将显示我设置为隐藏的两列.我不希望用户看到这些列,但我仍然需要它们,所以我只想隐藏它们.

我搜索了Devexpress的在线文档,他们在这里说明可以使用ShowInColumnChooser属性隐藏列.但是我无法在ColumnChooser中隐藏这些列.他们没有向您展示任何示例,只是这行代码:
public bool ShowInColumnChooser { get; set; }
Run Code Online (Sandbox Code Playgroud)
我猜这是一些Devexpress控件的属性,但是他们没有说明如何使用它.
c# devexpress visual-studio-2010 visual-c#-express-2010 devexpress-windows-ui
如何使用Devexpress(Windows窗体)创建报告?
如果可能的话,我愿意一步一步地知道
我使用的是台式机的DevExpress双赢的UI形式,我想实现像搜索栏这样:

在DevExpress中有没有办法像这个插件一样WinForms?
c# ×8
devexpress ×8
winforms ×3
.net ×1
.net-3.5 ×1
asp.net ×1
devforce ×1
direct2d ×1
gdi ×1
gridcontrol ×1
memory-leaks ×1
slimdx ×1
xtragrid ×1