如何防止用户通过在AutoCAD中设置当前按钮来更改配置文件?

时间:2019-04-08 19:44:56

标签: c# autocad

我有一个WPF应用程序,我正在从我的应用程序中打开AutoCAD中的图形。我只是想限制用户使用“设置当前”按钮来更改当前配置文件,而且我不想在注册表设置中进行配置文件更改。

1 个答案:

答案 0 :(得分:0)

我终于找到答案了,只需使用UrrentProfileChangingEventHandler来显示一个弹出窗口,并在CurrentProfileChangedEventHandler事件上使所需的配置文件处于活动状态。这是代码。

放置初始化方法

UserConfigurationManager bnb = Autodesk.AutoCAD.ApplicationServices.Core.Application.UserConfigurationManager;

            bnb.CurrentProfileChanging += UserConfigManagerEvent_CurrentProfileChanging_Handler;

            bnb.CurrentProfileChanged += UserConfigManagerEvent_CurrentProfileChanged_Handler;

添加用于更改个人资料事件的方法

private void UserConfigManagerEvent_CurrentProfileChanging_Handler(object sender,ProfileEventArgs e)
        {
            string profileName = acApp.GetSystemVariable("CPROFILE").ToString();
            curProfile = e.ProfileName;
            if (profileName != curProfile && !IsMessageDisplayed)
            {
                IsMessageDisplayed = true;
                MessageBox.Show("The selected profile is not associated with Project");
            }

            if (string.IsNullOrEmpty(prevProfile))
            {
                prevProfile = profileName;
            }
        }

在个人资料更改事件发生后致电

private void UserConfigManagerEvent_CurrentProfileChanged_Handler(object sender, ProfileEventArgs e)
        {
            AcadApplication app = (AcadApplication)Application.AcadApplication;
            AcadPreferences pref = app.Preferences;
            string cur = curProfile;
            if (curProfile.Equals(prevProfile))
            {
                IsMessageDisplayed = false;
                return;
            }
            else
            {
                pref.Profiles.ActiveProfile = prevProfile;
            }
        }