using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Autodesk.RevitAddIns;
using LRH.Controls;
using RevitVersion;
namespace LRH
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : WindowBase
{
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}///
/// 删除指定控件的指定事件
///
///
///
public void ClearEvent(System.Windows.Forms.Control control, string eventname)
{
if (control == null) return;
if (string.IsNullOrEmpty(eventname)) return;
BindingFlags mPropertyFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic;
BindingFlags mFieldFlags = BindingFlags.Static | BindingFlags.NonPublic;
Type controlType = typeof(System.Windows.Forms.Control);
PropertyInfo propertyInfo = controlType.GetProperty("Events", mPropertyFlags);
EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(control, null);
FieldInfo fieldInfo = (typeof(System.Windows.Forms.Control)).GetField("Event" + eventname, mFieldFlags);
Delegate d = eventHandlerList[fieldInfo.GetValue(control)];
if (d == null) return;
EventInfo eventInfo = controlType.GetEvent(eventname);
foreach (Delegate dx in d.GetInvocationList())
eventInfo.RemoveEventHandler(control, dx);
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Button_Click(sender,e);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
var application = GetAddInApplication();
AddInManager.StartRevit(StartType.Start,application);
this.Close();
}
public RevitAddInApplication GetAddInApplication()
{
string fileName = System.IO.Path.Combine(Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName, "LRH.RevitApplication.dll");
RevitAddInApplication application = new RevitAddInApplication("LRH", fileName, Guid.NewGuid(), "LRH.RevitApplication.XHApplication", "FWindSoft");
return application;
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var application = GetAddInApplication();
AddInManager.StartRevit(StartType.StartAuto, application);
this.Close();
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{
var application = GetAddInApplication();
AddInManager.StartRevit(StartType.Attach, application);
}
private void Button_Click_3(object sender, RoutedEventArgs e)
{
var application = GetAddInApplication();
AddInManager.StartRevit(StartType.Cancel, application);
}
}
}